0

我想在 Python 中读取一维 numpy 数组并生成另外两个 numpy 数组:

  • 如果没有“nan”值,第一个是输入。否则,输入 'nan' 值替换为 '0'
  • 第二个是掩码,1='输入值不是'nan'','0'='输入值是nan''

例如:

a = numpy.array([1,2,numpy.nan,4])

会给

[1,2,0,4]
[1,1,0,1]

在 python 中执行此操作的最有效方法是什么?

谢谢

4

3 回答 3

1

要替换nan0,请使用numpy.nan_to_num

>>> a = numpy.array([1,2,numpy.nan,4])
>>> numpy.nan_to_num(a)
array([ 1.,  2.,  0.,  4.])

用于numpy.isnan将非 nan 数字转换nan为. 然后从 中减去它们。TrueFalse1

>>> numpy.isnan(a)
array([False, False,  True, False], dtype=bool)
>>> 1 - numpy.isnan(a)
array([ 1.,  1.,  0.,  1.])
于 2013-10-24T13:21:39.780 回答
0

对于第一个:

numpy.nan_to_num(a)

第二个:

numpy.invert(numpy.isnan(a)).astype(int)
于 2013-10-24T13:21:16.193 回答
0

要将 NaN 转换为零,请使用:

numpy.nan_to_num(a)

要为非 NaN 设置 1,为 NaN 设置 0,请尝试:

numpy.isfinite(a)*1
于 2013-10-24T14:01:00.247 回答