【问题标题】:Using bool array mask, replace False values with NaN使用布尔数组掩码,用 NaN 替换 False 值
【发布时间】:2015-11-03 18:35:02
【问题描述】:

我有两个数组,

a = array([
   [ 0.93825418,  0.60731973,  0.44218921,  0.90888805,  0.97695114],
   [ 0.27422807,  0.75870153,  0.12154102,  0.89137678,  0.04257262],
   [ 0.32855867,  0.17215507,  0.00302302,  0.95395069,  0.02596567],
   [ 0.18385244,  0.09108341,  0.27925367,  0.0177183 ,  0.41035188],
   [ 0.87229432,  0.73573982,  0.98554476,  0.72321398,  0.98316711],
   [ 0.16474265,  0.5308054 ,  0.27913615,  0.59107689,  0.6480463 ],
   [ 0.88356436,  0.22343885,  0.74900285,  0.43895017,  0.74993129],
   [ 0.08097611,  0.48984607,  0.33991052,  0.06431022,  0.10753135],
   [ 0.67351561,  0.13165046,  0.41327765,  0.21768539,  0.7337069 ],
   [ 0.65609999,  0.06241059,  0.3400624 ,  0.13234171,  0.23679716]
])

b = array([
   [False,  True,  True, False, False],
   [ True, False, False, False, False],
   [ True,  True, False, False, False],
   [False, False,  True, False,  True],
   [False, False, False,  True, False],
   [False,  True,  True,  True,  True],
   [False,  True, False,  True,  True],
   [False,  True,  True, False, False],
   [ True,  True,  True,  True,  True],
   [ True, False,  True, False,  True]
], dtype = bool)

现在我想使用b 来屏蔽a,保留a 中的True 值,并将False 值替换为NaN,得到一个形状类似于@987654328 的新数组@。

怎么做?

【问题讨论】:

  • 作为您特别要求的替代方案,您是否想过做一些不同的事情? numpy.ma 包正是出于这个原因而存在。注意:在 numpy.ma 中,掩码为 True 表示该值被屏蔽;你用的是反义词。

标签: python arrays numpy nan


【解决方案1】:

你可以使用boolean indexing:

a[~b] = np.nan

这会将a 中与掩码b 中的False 值对应的所有值替换为np.nan

>>> a
array([[        nan,  0.60731973,  0.44218921,         nan,         nan],
       [ 0.27422807,         nan,         nan,         nan,         nan],
       [ 0.32855867,  0.17215507,         nan,         nan,         nan],
       [        nan,         nan,  0.27925367,         nan,  0.41035188],
       [        nan,         nan,         nan,  0.72321398,         nan],
       [        nan,  0.5308054 ,  0.27913615,  0.59107689,  0.6480463 ],
       [        nan,  0.22343885,         nan,  0.43895017,  0.74993129],
       [        nan,  0.48984607,  0.33991052,         nan,         nan],
       [ 0.67351561,  0.13165046,  0.41327765,  0.21768539,  0.7337069 ],
       [ 0.65609999,         nan,  0.3400624 ,         nan,  0.23679716]])

【讨论】:

猜你喜欢
  • 2021-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-03-09
  • 2018-04-10
  • 2020-05-09
  • 2020-02-14
  • 2020-11-19
  • 2019-02-06
相关资源
最近更新 更多