Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从矩阵创建遮罩_Python - Fatal编程技术网

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]]