我有两个2d双位数组(仅限1和0)。我在做
array2 = numpy.where( array1, 0, array2 )
在array2
与条件匹配时更改array1
的值。但是如果我不想改变那些满足条件但是它们的邻居细胞的那些细胞的值呢?我的意思是,我要改变i,j
以array1
为True
而不是array2[i-1:i+2,j-1:j+2]
。
子阵列{{1}}。
有可能避免循环,这对大数组来说真的很慢吗?
答案 0 :(得分:1)
请参阅scipy.ndimage.filters.generic_filter
所以在你的例子中,footprint
参数将是(3, 3)
,即3乘3的邻域,如果条件为真或假,则function
参数应该返回;
类似的东西:
func = lambda xs: np.any(xs) # or whatever appropriate
mask = generic_filter(array1, func, footprint=(3, 3))
array2[mask] = 0