我是使用 Python 代码的初学者,当两个矩阵包含 Nan 值时,我在计算 RMSE 时遇到问题。
例如,我有两个矩阵,其中包括几列具有 Nan 值的列。如何计算每列的 RMSE 值?
X = 形状为 (1500, 27) 的 ndarray,y = 形状为 (1500, 27) 的 ndarray
如有任何帮助,我们将不胜感激。
我尝试计算它,但每次都得到 Nan 值。因此,任何帮助将不胜感激。
你的ndarray非常小。因此,只需迭代行和列并使用
import numpy as np
arr1 = np.array([[1, 2, 10, 50, -np.nan, 0, np.nan],[1, 2, 10, 30, -np.nan, 0, np.nan]])
arr2 = np.array([[5, 2, 10, 50, 10, 0, np.nan],[1, 2, 10, 50, -np.nan, 0, np.nan]])
for i in range(arr1.shape[0]):
rmse = 0
for j in range(arr1.shape[1]):
if np.isnan(arr1[i, j]) or np.isnan(arr2[i, j]):
continue
rmse += (arr1[i,j] - arr2[i,j])**2
print((rmse/arr1.shape[1])**(1/2))
现在,如果您正在使用更大的数组并且您的瓶颈是这部分 - 寻找集合操作。