在numpy数组中过滤二维图像并在python中计算
我导入了一个带有三个波段的图像。 我把每个乐队都输入一个numpy数组 现在我尝试修改波段1的值,以波段3为条件 但是,我的图像有许多零值,必须计算除零值以外的其他值才能加快运算速度 我认为排除0值后查找值会更快 下面是我以前做的代码在numpy数组中过滤二维图像并在python中计算,python,numpy,Python,Numpy,我导入了一个带有三个波段的图像。 我把每个乐队都输入一个numpy数组 现在我尝试修改波段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.1
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
....
cols=0
行数=0
[cols,rows]=test.shape
i=0
i2=0
而我,
k=0
k2=0
当k检验[i,k]>0.05089和30>test3[i,k]>29.8时:
测试[i,k]=1
....
看起来您需要的是选择一个“掩码”并分配给它。您的示例有点奇怪和不完整,但您可以通过将循环替换为:
test[(0.15>test) & (test>0.05089) & (30>test3) & (test3>29.8)] = 1
这里发生了什么:
创建一个与test大小相同的布尔数组,所有<0.15的元素都设置为(0.15>test)
,其余的True
False
运算符对其他布尔数组进行元素逻辑AND运算,以生成一个新的布尔数组(大小也与test和test3相同)&
表示“取XXX中所有为真的元素,并将test[XXX]=1
的对应元素设置为1”(假设XXX与test具有相同的形状(或者可以广播到相同的形状))test
你可能想考虑举个例子。现在你使用代词很难理解你想要什么。例如,我想在数组中找到一个值1并将其加倍。请编辑你的问题并提供一些代码。更正了内容。如果您不理解,请再次评论。您的示例很糟糕,您显然没有尝试自己运行它。变量名不能以数字开头,只需执行
img*=2
。请展示一些实际上可以运行的东西。考虑一个包含加法的例子。谢谢你对这个问题的兴趣。