gpt4 book ai didi

python - 轴的 Np.sum 不同

转载 作者:行者123 更新时间:2023-12-01 06:27:11 25 4
gpt4 key购买 nike

我遇到了一个奇怪/有趣的行为。

我有一个形状为 (64,25) 的数组

对于该数组的一个元素(称为“img”)的总和,我们得到:

print(np.sum(img[::1,[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24]][14]))
#106.15421 get printed out

对于 np.sum(img, axis=1) 的相同元素,我们得到不同的东西:

k = np.sum(img[::1,[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24]],1)
print(k[14])
#106.15422 get printed out

这怎么可能?我能做些什么吗?

P.s我检查了另一种方法来研究这种行为:

print(np.sum(np.delete(img,np.s_[12],1)[14]))
k_d = np.sum(np.delete(img,np.s_[12],1),1)
print(k_d[14])
# Here both times we get 106.15421

最佳答案

我检查了自己,并能够使用 img 的 float32 类型重建您的行为:

img=np.random.random((64,25)).astype(np.float32)
select=[0,1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24]
Isel=img[:,select]
h=np.sum(Isel[14,...])
print(h)
k = np.sum(Isel,axis=1)
print(k[14],h-k[14])
ks = sum(img[14,select])
print(ks,h-ks)

10.111376

10.111374 1.9073486e-06

10.11137617379427 -3.650784492492676e-07

这种情况并不总是发生。看来是数值错误。如果您使用 float64,它会下降到 e-16。我假设添加的顺序或方式不同,导致不同的舍入。

顺便说一句:通用总和本身已更改为 float64,这就是它以更高的精度打印的原因。

关于python - 轴的 Np.sum 不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60078425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com