【发布时间】:2018-04-12 15:19:51
【问题描述】:
如果我问 Python 1963 的立方幂,我会得到:
In[1]: 1963**3
Out[1]: 7564163347
但如果我定义一个数组并要求 numpy.power 返回我得到的立方幂:
In[1]: a=nu.array([1, 3, 5, 1963])
In[2]: nu.power(a)
Out[2]: array([1, 27, 125, -1025771245], dtype=int32)
为什么它会正确返回一些数字而不能正确返回其他数字?我需要将所有数字标记为原始数组中的浮点数吗?为什么数组有问题,而我直接求立方幂却没有问题(例如1961**3)?
我注意到这是可行的:
In[1]: a=nu.array([1, 3, 5, 1963.0])
In[2]: nu.power(a)
Out[2]: array([1.00000000e+00, 2.70000000e+01, 1.25000000e+02, 7.56416335e+09])
谢谢!
【问题讨论】:
-
7564163347 超过了 int32 的最大值 en.wikipedia.org/wiki/2,147,483,647
-
7564163347溢出int32,您需要具体说明如何使用int64:np.array([1, 3, 5, 1963], dtype='int64')。 -
试试 a=np.array([1, 3, 5, 1963],dtype="int64")