有没有办法在numpy中禁用静默转换?
import numpy as np
a = np.empty(10, int)
a[2] = 4 # OK
a[3] = 4.9 # Will silently convert to 4, but I would prefer a TypeError
a[4] = 4j # TypeError: can't convert complex to long
可以将numpy.ndarray对象配置为在分配任何不是ndarray类型的isinstance()的值时返回TypeError吗?
如果没有,最好的替代方案是子类numpy.ndarray(并覆盖__setattr__或__setitem__)?
最佳答案 不幸的是,numpy在数组创建中不提供此功能,您可以设置是否仅在转换数组时允许转换(请查看文档
numpy.ndarray.astype
).
您可以使用该功能或子类numpy.ndarray,但也可以考虑使用python本身提供的array
模块来创建一个类型化数组:
from array import array
a = array('i', [0] * 10)
a[2] = 4 # OK
a[3] = 4.9 # TypeError: integer argument expected, got float