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