Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在numpy数组中过滤二维图像并在python中计算_Python_Numpy - Fatal编程技术网

在numpy数组中过滤二维图像并在python中计算

在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

我导入了一个带有三个波段的图像。 我把每个乐队都输入一个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.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
这里发生了什么:

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

  • 你可能想考虑举个例子。现在你使用代词很难理解你想要什么。例如,我想在数组中找到一个值1并将其加倍。请编辑你的问题并提供一些代码。更正了内容。如果您不理解,请再次评论。您的示例很糟糕,您显然没有尝试自己运行它。变量名不能以数字开头,只需执行
    img*=2
    。请展示一些实际上可以运行的东西。考虑一个包含加法的例子。谢谢你对这个问题的兴趣。