我希望将所有小于-999的值替换为NaN,将值在-999范围内的值替换为0,并在2D数组中替换为-0.1。
我可以使用
替换一个值data[data < -999] = 'nan'
然而,当我使用
时data[data < -999] = 'nan'
data[data < 0] = -0.1
它说
RuntimeWarning:在较少的情况下遇到无效值 数据[数据&lt; 0] = -0.1
如何替换值&lt; -999,NaN
,值范围为-999到0,范围为-0.1
答案 0 :(得分:1)
你的行
data[data < -999] = 'nan'
没有做你的想法。 data < -999
在Python2.7中评估为falsey,即使这是一个奇怪的事情;你正在将列表与int进行比较。这意味着表达式映射到
data[0] = 'nan'
这就是为什么您只看到一个值更改的原因。请注意,Python3中不允许使用此语法
看起来你正在尝试
for column in data:
for ix, num in enumerate(column):
if num < -999:
column[ix] = 'nan'
elif num < 0:
column[ix] = -0.1
为什么你的工作不起作用的一个简单例子:
>>> data = [[-9999, -9999], [-9999, -9999]]
>>> data[data<-999] = 'nan'
>>> data
['nan', [-9999, -9999]]
>>>