为什么numpy.dot()对大值给出了不正确的答案?
这是一个溢出问题 33328335000远远大于2^31,因此您需要在为什么numpy.dot()对大值给出了不正确的答案?,numpy,data-science,large-data,dot-product,Numpy,Data Science,Large Data,Dot Product,这是一个溢出问题 33328335000远远大于2^31,因此您需要在long a=list(range(10000)) b=list(range(10000)) result=0 for i,j in zip(a,b): result+=i*j print(result) print() import numpy as np numpy_result=np.dot((np.array(a)),(np.array(b))) print(numpy_result) Output
long
a=list(range(10000))
b=list(range(10000))
result=0
for i,j in zip(a,b):
result+=i*j
print(result)
print()
import numpy as np
numpy_result=np.dot((np.array(a)),(np.array(b)))
print(numpy_result)
Output
333283335000
-1724114088
33328335000
看起来像np.array(a)
有一个np.int32
dtypenp.int64
是较新计算机和/或python/numpy版本上的默认值。
numpy_result=np.dot(np.array(a, dtype=np.longlong), np.array(b, dtype=np.longlong))