Python 从矩阵创建遮罩
嗨,我有一个这样的矩阵Python 从矩阵创建遮罩,python,Python,嗨,我有一个这样的矩阵 A=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]] 我想从矩阵a得到一个掩模,如下所示 mask=[[nan, 0, nan],[0, 0, 0],[nan, 0, nan]] 为此,我尝试过: import numpy as np A=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]] mask=A mask[np.isfinite(A)]=0 但这也会删除矩阵A的数值。您可以使用A来屏蔽那些
A=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]]
我想从矩阵a得到一个掩模,如下所示
mask=[[nan, 0, nan],[0, 0, 0],[nan, 0, nan]]
为此,我尝试过:
import numpy as np
A=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]]
mask=A
mask[np.isfinite(A)]=0
但这也会删除矩阵A的数值。您可以使用A来屏蔽那些不是np.nan
的值,并用0
填充屏蔽数组:
A = np.array([[np.nan, 4, np.nan],[3 , 7 , 8],[np.nan, 23, np.nan]])
np.ma.masked_array(A, mask = ~np.isnan(A)).filled(0)
array([[nan, 0., nan],
[ 0., 0., 0.],
[nan, 0., nan]])
为了将值保留在中,您需要复制,请参见: 在你的情况下,这将是
A=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]]
mask=np.array(A.copy())
mask[~np.isnan(A)] = 0
使用A[~np.isnan(A)]
:
输出:
[[nan 0. nan]
[ 0. 0. 0.]
[nan 0. nan]]
[[nan 0. nan]
[ 0. 0. 0.]
[nan 0. nan]]