禁用numpy中的静默转换
问题内容:
有没有办法禁用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
分配任何非ndarray类型的值时,可以将numpy.ndarray
对象配置为返回a吗?如果不是,最好的替代方法是子类化(并重写或)?TypeError``isinstance()``numpy.ndarray``__setattr__``__setitem__
问题答案:
不幸的是numpy
,在数组创建中没有提供此功能,您可以设置是否仅在转换数组时才允许强制转换(请参阅文档numpy.ndarray.astype
)。
您可以使用该功能或子类numpy.ndarray
,但也可以考虑使用array
python本身提供的模块来创建类型化数组:
from array import array
a = array('i', [0] * 10)
a[2] = 4 # OK
a[3] = 4.9 # TypeError: integer argument expected, got float