我不明白为什么提高大于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]
答案 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')