在numpy数组中过滤2D图像并用python进行计算

2024-05-23 19:15:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我导入了一个有三个波段的图像。 我把每一个乐队都编入了一个纽比阵列。在

现在我尝试修改带1的值,条件是频带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
....

Tags: 代码test图像波段k2条件rowscols
1条回答
网友
1楼 · 发布于 2024-05-23 19:15:01

看起来你想要的是选择一个“蒙版”并分配给它。您的示例有点奇怪和不完整,但是您可以通过将循环替换为:

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

这是怎么回事:

  • (0.15>test)创建一个与test大小相同的布尔数组,所有元素都设置为True,其余元素False。在
  • &运算符与其他布尔数组一起执行元素逻辑“与”操作,以生成一个新的布尔数组(同样大小与test和test3相同)
  • test[XXX] = 1表示“取XXX的所有元素为true,并将test的对应元素设置为1”(假设XXX与test具有相同的形状(或者可以广播到相同的形状))

相关问题 更多 >