两个涉及单元邻居的相同形状的numpy数组之间的Python交互

时间:2014-10-21 10:36:14

标签: python arrays numpy neighbours

我有两个2d双位数组(仅限1和0)。我在做

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

array2与条件匹配时更改array1的值。但是如果我不想改变那些满足条件但是它们的邻居细胞的那些细胞的值呢?我的意思是,我要改变i,jarray1True而不是array2[i-1:i+2,j-1:j+2]。 子阵列{{1}}。 有可能避免循环,这对大数组来说真的很慢吗?

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