numpy吧 关注:55贴子:39
  • 1回复贴,共1

np.dot 计算错误???

只看楼主收藏回复

一个简单的程序片段,
arr1 = list(range(1000000))
arr2 = list(range(1000000,2000000))
arr1_np = np.array(arr1)
arr2_np = np.array(arr2)
np.dot(arr1_np, arr2_np)
输出 -1942957984
正确的结果应该是 833332333333500000
请问大侠,问题出在哪儿呢?windows 10 64bit
我发现,把数字减小到千位数,(1000,(1000,2000)),结果正确。


IP属地:北京1楼2021-02-23 04:34回复
    找到问题了。在Windows平台上,numpy缺省的integer类型是int32,数字超出范围会溢出。上贴中转成ndarray时,dtype明确要求int64就行了,
    arr1_np = np.array(arr1, dtype='int64')
    arr2_np = np.array(arr2, dtype='int64')


    IP属地:北京2楼2021-02-24 12:14
    回复