这是一个最小的代码示例:
import numpy as np
x = np.array(1e-35,dtype=np.double)
y = int(1e19)
print( type(x/y) )
y = int(1e20)
print( type(x/y) )
在我的机器上,前者打印numpy.float64
,后者打印float
。我想具体的数字在不同的机器上会有所不同,但重点是对于小整数,除法保留类型,而对于大整数,类型被转换为 Python 浮点数。我想知道这是否是Numpy中的错误,除了手动将所有内容转换为double之外是否还有其他解决方案。
这似乎无害,但是当我尝试编写 ufunc
并且强制转换仅发生在数组的某些元素上时,返回类型变为 object
,并且程序抛出“无法强制提供输出参数”错误。