我导入了一个带有三个波段的图像。 我把每个乐队都变成了一个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
....
答案 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具有与测试相同的形状(或可以广播到相同的形状))