首页 > 解决方案 > 将一个矩阵中的值替换为相同位置的另一个矩阵中的 NA

问题描述

我有两个相同形状的矩阵都填充了浮点数,但是其中一个矩阵在某些位置有 NA。我想做到这一点,以便另一个矩阵在相同的位置也有 NA。

我能想到一些幼稚的解决方案:

1)任何形式的条件循环 - 非常慢

2) 将 NA 转换为 0,将矩阵相乘,以便没有 NA 的矩阵在所需位置获得 0,然后将它们按元素划分以恢复为原始值,最后将 0 转换为 NA - 更快,但仍然低效且笨重

我想找到解决此问题的有效方法,因为我需要执行此操作数百万次。

标签: pythonnumpy

解决方案


IfA是具有NaN值的矩阵,并且B是另一个矩阵。

import numpy as np

# Construct example matrices
A = np.random.random((3,3))
B = np.random.random((3,3))
# Set two values to np.nan
A[0,:2] = np.nan
# Set values in B to np.nan in the same locations that they occur in A
B[np.isnan(A)] = np.nan

推荐阅读