在Python代码中计算两个矩阵中包含Nan值时的RMSE

问题描述 投票:0回答:1

我是使用 Python 代码的初学者,当两个矩阵包含 Nan 值时,我在计算 RMSE 时遇到问题。

例如,我有两个矩阵,其中包括几列具有 Nan 值的列。如何计算每列的 RMSE 值?

X = 形状为 (1500, 27) 的 ndarray,y = 形状为 (1500, 27) 的 ndarray

如有任何帮助,我们将不胜感激。

我尝试计算它,但每次都得到 Nan 值。因此,任何帮助将不胜感激。

python-3.x nan numpy-ndarray
1个回答
0
投票

你的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))

现在,如果您正在使用更大的数组并且您的瓶颈是这部分 - 寻找集合操作。

© www.soinside.com 2019 - 2024. All rights reserved.