我想在 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 中执行此操作的最有效方法是什么?
谢谢
要替换nan
为0
,请使用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
为. 然后从 中减去它们。True
False
1
>>> numpy.isnan(a)
array([False, False, True, False], dtype=bool)
>>> 1 - numpy.isnan(a)
array([ 1., 1., 0., 1.])
对于第一个:
numpy.nan_to_num(a)
第二个:
numpy.invert(numpy.isnan(a)).astype(int)
要将 NaN 转换为零,请使用:
numpy.nan_to_num(a)
要为非 NaN 设置 1,为 NaN 设置 0,请尝试:
numpy.isfinite(a)*1