替换python中2D数组范围内的值?

时间:2016-03-14 18:46:09

标签: python-2.7

我希望将所有小于-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

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]]
>>>