Python:numpy.linalg.norm 产生的结果不同于 np.sum(np.abs(x)**2,axis=-1)**(1./2)

Python: numpy.linalg.norm produces different result than np.sum(np.abs(x)**2,axis=-1)**(1./2)

我有 2 张大小为 (256,256,3) 的图像,我想计算它们差异的 norm-2。

# Original Image

np_ori = np.array(icon_original).reshape(1,-1)

# My reconstructed image

np_0 = np.array(icon_0).reshape(1,-1)

如果我用numpy.linalg.norm

norm_org_0 = np.linalg.norm(np_ori-np_0)

我明白了

62735

当我使用 np.sum(np.abs(x)*2,axis=-1)**(1./2)

np.sum(np.abs(np_ori-np_0)**2,axis=-1)**(1./2)

我明白了

2207

即使我用.reshape(-1)把它转成vector

结果也是一样的

这两个不应该产生相同的结果吗?

正如 Divakar 所提到的,这是一个数据类型问题。转换为 float64 解决了问题。