过滤numpy数组中的2D图像并在python中计算

时间:2018-05-06 14:18:27

标签: python numpy

我导入了一个带有三个波段的图像。 我把每个乐队都变成了一个numpy阵列。

现在我尝试修改band 1的值,以band 3为条件。

但是,我的图像有很多零值,必须计算零除外,以加快操作。

我认为在排除0值后找到值会更快。

以下是我以前的代码。

cols = 0 
rows = 0
[cols,rows] = test.shape
i= 0
i2 = 0

while i < cols:
    k = 0
    k2 =0
    while k <rows:
        if 0.15>test[i,k]>0.05089 and  30> test3[i,k]>29.8  :
            test[i,k] = 1
....

1 个答案:

答案 0 :(得分:2)

看起来你想要的是选择一个&#34;掩码&#34;并分配给它。你的例子有点奇怪和不完整,但你可以通过用以下代码替换循环来实现我认为你想要实现的目标:

test[(0.15>test) & (test>0.05089) & (30>test3) & (test3>29.8)] = 1

这里发生了什么:

  • (0.15>test)使用所有元素&lt;创建一个与test相同大小的布尔数组0.15设置为True,其余为False
  • &运算符与其他布尔数组进行元素逻辑AND以生成新的布尔数组(也与test和test3的大小相同)
  • test[XXX] = 1表示&#34;将XXX的所有元素都设为true,并将test的相应元素设置为1&#34; (它假设XXX具有与测试相同的形状(或可以广播到相同的形状))