计算均方根误差并在 Python 中获取 3D 数组

问题描述

我有两个 3d 数组 A A.shape=[335,71,57] 和 B B.shape=[335,57],我以这种方式计算它们之间的 RMSE

rmse=sqrt(mean_squared_error(A,B))

当然,我得到了一个标量。怎么写才能得到rmse.shape=[335,57]这样的另一个3维数组?实际上,我需要为数组中的每个位置获取一个 rmse 值。

谢谢

解决方法

举个例子:

A = np.random.rand(10,10,10)
B = np.random.rand(10,10)
mse = ((A-B)**2)
rmse = np.sqrt(mse)

第三行将获得每个元素的平方误差,最后一行将获得每个元素的根。

请注意,您要查找的不是 MSE,因为 MSE 是平方误差的平均值,而您要查找的是每个项目。

通过添加 mse = mse.mean(axis=ax),您可以获得平均值,在您选择的轴上(在取根之前)。

例如:

A = np.random.rand(10,10)
mse = ((A-B)**2).mean(axis=0)
rmse = np.sqrt(mse)

将采用每行 RMSE。