我有一个名为“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和这个网站的新手,对不起,如果我是一个菜鸟。
答案 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