为了账号安全,请及时绑定邮箱和手机立即绑定

从矩阵创建掩码

从矩阵创建掩码

慕侠2389804 2021-12-17 16:31:49
我有一个这样的矩阵A=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]]我想从矩阵 A 中得到一个掩码,如下所示mask=[[nan, 0, nan],[0, 0, 0],[nan, 0, nan]]为此,我尝试过:import numpy as npA=[[nan, 4, nan],[3 , 7 , 8],[nan, 23, nan]]mask=Amask[np.isfinite(A)]=0但这也会删除矩阵 A 的数值。
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

您需要复制 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


查看完整回答
反对 回复 2021-12-17
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

使用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)] = 0


print(A)

输出:


[[nan  0. nan]

 [ 0.  0.  0.]

 [nan  0. nan]]


查看完整回答
反对 回复 2021-12-17
?
月关宝盒

TA贡献1772条经验 获得超5个赞

您可以使用屏蔽数组,以便屏蔽那些不是的值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]])


查看完整回答
反对 回复 2021-12-17
  • 3 回答
  • 0 关注
  • 174 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信