从矩阵创建掩码

我有一个这样的矩阵


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 的数值。


慕侠2389804
浏览 175回答 3
3回答

开满天机

您需要复制 A 以保留 A 中的值,请参阅:https : //docs.python.org/2/library/copy.html在你的情况下,这将是A=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]]mask=np.array(A.copy())mask[~np.isnan(A)] = 0

慕虎7371278

使用A[~np.isnan(A)]:from numpy import *  A=[[NaN, 4, NaN],[3 , 7 , 8],[NaN, 23, NaN]]    A = np.array(A)A[~np.isnan(A)] = 0print(A)输出:[[nan  0. nan] [ 0.  0.  0.] [nan  0. nan]]

月关宝盒

您可以使用屏蔽数组,以便屏蔽那些不是的值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]])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python