比较两个包含NaN的矩阵,并在Python中屏蔽两个矩阵中至少一个包含NaN的元素值

比较两个包含NaN的矩阵,并在Python中屏蔽两个矩阵中至少一个包含NaN的元素值,python,python-2.7,numpy,Python,Python 2.7,Numpy,我有两个3D矩阵(A和B),都包含随机元素中的NaN。我比较这两个矩阵,在其中至少有一个矩阵包含NaN的地方,我希望它们都包含NaN。换句话说,如果它们在该索引处都不包含NaN,我想用NaN替换该索引值。有没有一种有效的方法可以使用python函数实现这一点 import numpy as np # Create the fake variables A and B. Here is what A and B look like initially: A = np.array([[1, 2,

我有两个3D矩阵(A和B),都包含随机元素中的NaN。我比较这两个矩阵,在其中至少有一个矩阵包含NaN的地方,我希望它们都包含NaN。换句话说,如果它们在该索引处都不包含NaN,我想用NaN替换该索引值。有没有一种有效的方法可以使用python函数实现这一点

import numpy as np

# Create the fake variables A and B. Here is what A and B look like initially:
A = np.array([[1, 2, np.nan], [4, np.nan, 6], [np.nan, 8, 9]])
B = np.array([[1, 2, 3], [4, 5, np.nan], [np.nan, 8, 9]])

# What I want A and B to look like in the end:
A
array([[  1.,   2.,  nan],
       [  4.,  nan,  nan],
       [ nan,   8.,   9.]])

B
array([[  1.,   2.,   nan],
       [  4.,   nan,  nan],
       [ nan,   8.,   9.]])
你需要和


使用
np.logical\u或
创建掩码<代码>np.logical_或(np.isnan(A),np.isnan(B))
@Kasramvd谢谢!这也是一个优雅的解决方案!可爱!非常感谢。我知道这必须有一个简单的函数。
>>> A[np.isnan(B)] = np.nan
>>> B[np.isnan(A)] = np.nan