python - 为什么 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()
在做我不知道的其他事情?
解决方案
推荐阅读
- python - 使用 python flask 编写一个连接和读取 azure web 应用程序上安装的存储的代码?
- oauth-2.0 - OAuth2 over HTTPS 启用负载均衡器
- r - 嵌套 for 循环中的打印输出和存储向量的结果不同。是什么赋予了?
- javascript - 捕获交易拒绝-moralis
- python - 使用 Cython 保护 Windows 中的 Python 代码
- python - 算法的 numpy 向量化以返回二进制序列中连续部分的索引
- java - 在底部导航视图上多次点击时应用程序崩溃
- java - Allure testNg:向环境部分添加细节
- lme4 - gtsummary 和 lmerTest
- python - 为什么我的 django 模板无法识别我在 views.py 文件中设置的 url 参数?