1

我有两个二维逐位数组(仅限 1 和 0)。我在做

array2 = numpy.where( array1, 0, array2 )

它改变了array2whenarray1匹配条件的值。但是,如果我不想改变满足条件的单元格的值,但他们的邻居单元格的值呢?我的意思是,我想更改subarray 而不是i,jwhich array1evals to 。可以避免循环,这在大数组上真的很慢?Truearray2[i-1:i+2,j-1:j+2]

4

1 回答 1

1

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
于 2014-10-21T10:41:42.947 回答