使用numpy.ma掩盖空白值
我在使用 numpy.ma
处理我的数据时遇到了问题。我记得之前用过它来遮盖空白值,但现在不知道该怎么做。这里有一段代码,展示了我遇到的问题。
import numpy as np
import numpy.ma as ma
x = np.array([[0.0, 1.1, '', 2.2, ''],[3.3,'', 4.4, '', 5.5]])
for index, value in np.ndenumerate(x):
if value == '':
x[index] = None
x = ma.masked_values(x, None)
print x
这段代码的输出是:
[['0' '1' 'N' '2' 'N']
['3' 'N' '4' 'N' '5']]
我想做的是得到一个浮点数的遮罩数组,把任何缺失的值都遮盖掉。最后的 print
应该输出:
[[0.0 1.0 -- 2.0 --]
[3.0 -- 4.0 -- 5.0]]
1 个回答
2
如果你把空字符串替换成 NaN
,那么接下来的代码就能正常运行了:
In [19]: x = np.array([[0.0, 1.1, np.nan, 2.2, np.nan],[3.3,np.nan, 4.4, np.nan, 5.5]])
In [20]: m = ma.masked_array(x, np.isnan(x))
In [21]: print(m)
[[0.0 1.1 -- 2.2 --]
[3.3 -- 4.4 -- 5.5]]
最简单的做法是在把它们放进 np.array
之前,先把 ''
替换成 np.nan
。