仅从数组中的大元素减去10000

时间:2014-10-31 11:08:12

标签: python arrays if-statement subtraction

我有一个名为“array”的数组,其大小为(45,41),其中应包含范围(-200,200)中的值。但是,有些值已经通过在其值上加10,000来“标记”。我想通过以下方式来扣除这些元素:如果有问题的元素大于8000,则减去10000(如果它大于8000则必须标记)。

基本上,在伪代码中,我希望:

for i in 1:45
    for j in 1:41
        if array[i,j] > 8000
            array[i,j] = array[i,j] - 10000

非常感谢任何帮助,非常感谢!

编辑:这是我的完整代码:

#Read file
cubes=iris.load(pathfile)
print cubes
wind=cubes[0]
print wind

#Select the month
wind_cut = wind[11, :, :, 0]
array=wind_cut.data

print array.shape

for i in 1:45
    for j in 1:41
        if array[i,j] > 8000
            array[i,j] = array[i,j] - 10000

我得到的只是一个缩进错误。我是python和这个网站的新手,对不起,如果我是一个菜鸟。

2 个答案:

答案 0 :(得分:1)

如果您正在使用numpy数组,请尝试以下方法:

array[array>8000] -= 10000

答案 1 :(得分:1)

在numpy中,像nparray> = N这样的条件会创建一个我们可以用作索引的真/假数组。

import numpy
nparray = numpy.array(array) # reads a regular array and makes a numpy array
nparray[nparray>=8000] -=  10000  # subtract 10000 from the elements over 8000 only
# result in nparray