我有两个二维逐位数组(仅限 1 和 0)。我在做
array2 = numpy.where( array1, 0, array2 )
它改变了array2
whenarray1
匹配条件的值。但是,如果我不想改变满足条件的单元格的值,但他们的邻居单元格的值呢?我的意思是,我想更改subarray 而不是i,j
which array1
evals to 。可以避免循环,这在大数组上真的很慢?True
array2[i-1:i+2,j-1:j+2]
我有两个二维逐位数组(仅限 1 和 0)。我在做
array2 = numpy.where( array1, 0, array2 )
它改变了array2
whenarray1
匹配条件的值。但是,如果我不想改变满足条件的单元格的值,但他们的邻居单元格的值呢?我的意思是,我想更改subarray 而不是i,j
which array1
evals to 。可以避免循环,这在大数组上真的很慢?True
array2[i-1:i+2,j-1:j+2]
看scipy.ndimage.filters.generic_filter
所以在你的例子中,footprint
参数是(3, 3)
,即 3 x 3 的邻域,function
如果条件为真或假,参数应该返回;
就像是:
func = lambda xs: np.any(xs) # or whatever appropriate
mask = generic_filter(array1, func, footprint=(3, 3))
array2[mask] = 0