为什么在大于9的幂中提高numpy数组会返回错误的结果?

时间:2018-05-26 13:16:31

标签: numpy

我不明白为什么提高大于9的权力并不适合我。看似简单:我只是试图以10的力量筹集10,但无论出于什么原因,numpy失败了。可能是什么问题?

import numpy as np
number = 10
arr = [number]

print(np.power(np.array(arr),number)) # [1410065408]
print([n**number for n in arr]) # [10000000000]

1 个答案:

答案 0 :(得分:1)

  

为什么 以大于9的功率提升numpy数组会返回错误的结果?

由于隐含(假设来自类型推断) dtype ,因此在np.array实例化时加上溢出副作用:

>>> np.power( np.array( arr, dtype = np.int64 ), 10 )
array([10000000000], dtype=int64)

>>> np.power( np.array( arr, dtype = np.int32 ), 10 )
array([-2147483648])

>>> np.power( np.array( arr, dtype = np.int   ), 10 )
array([-2147483648])

>>> np.power( np.array( arr                   ), 10 )
array([-2147483648])

>>> pass;     np.array( arr ).dtype
dtype('int32')