首页 > 解决方案 > 为什么 python numpy sum() 给出的值与 + 不同?

问题描述

我有两个数组,每个数组有两行,我正在尝试使用它们进行一些计算。计算的最后一步是求和。当我尝试对 using 求和时.sum(),它给出了一个答案,当我尝试+通过显式索引每一行来手动求和时,它给出了不同的答案:

>>> ad=[[0.,0.,0.,-0.91,0.34],[0.,0.,1.,0.93,0.65]]
>>> nad=np.array(ad)
>>> W=[[0.29,0.],[0.23,0.]]
>>> NW = np.array(W)
>>> (nad[:,4] * (nad[:,3] + 0.96 * NW[nad[:,2].astype(int)][0][0])).sum() #use sum() on row 0 and 1
0.5707160000000001
>>> (nad[0,4] * (nad[0,3] + 0.96 * NW[nad[0,2].astype(int)][0])) #calculate by explicitly indexing row 0
-0.21474400000000005
>>> (nad[1,4] * (nad[1,3] + 0.96 * NW[nad[1,2].astype(int)][0])) #calculate by explicitly indexing row 0
0.74802
>>> (nad[0,4] * (nad[0,3] + 0.96 * NW[nad[0,2].astype(int)][0])) +  (nad[1,4] * (nad[1,3] + 0.96 * NW[nad[1,2].astype(int)][0])) #calculate by explicitly indexing row 0 and row 1
0.533276

差异(0.57071-0.533276)可能看起来很小,但迭代计算却很糟糕。我觉得这两种方法都应该给出相同的值,对吧?但是为什么他们给出不同的值呢?我的眼睛缺少什么?

即使手动进行 sum也会给出稍后的答案(一个带有+)。numpy 是否sum()在做我不知道的其他事情?

标签: pythonnumpy

解决方案


推荐阅读