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 解决了问题。
我有 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 解决了问题。