【问题标题】:Why numpy.dot() gives incorrect answer for large values?为什么 numpy.dot() 对大值给出不正确的答案?
【发布时间】:2021-06-30 14:47:36
【问题描述】:
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

【问题讨论】:

  • 看起来np.array(a) 有一个np.int32 dtype。 np.int64 是较新计算机和/或 python/numpy 版本的默认值。

标签: numpy data-science large-data dot-product


【解决方案1】:

这是一个溢出问题。

333283335000 远大于 2^31 所以你需要在long long中进行操作

numpy_result=np.dot(np.array(a, dtype=np.longlong), np.array(b, dtype=np.longlong))

333283335000

【讨论】:

    猜你喜欢
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多