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

标签 python arrays numpy neighbours

我有两个二维咬合数组(仅 1 和 0)。我在做

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

array1匹配条件时,它会更改array2的值。但是,如果我不想更改满足条件的单元格的值,而是更改其邻居单元格的值,该怎么办?我的意思是,我想更改为 array1 评估为 Truei,j 子数组array2[i-1:i+2,j-1:j+2]。 是否可以避免循环,这在大数组上真的很慢?

最佳答案

参见scipy.ndimage.filters.generic_filter

因此,在您的示例中,footprint 参数将为 (3, 3),即 3 x 3 的邻域和 函数 code> 如果条件为 true 或 false,则参数应返回;

类似于:

func = lambda xs: np.any(xs)  # or whatever appropriate
mask = generic_filter(array1, func, footprint=(3, 3))
array2[mask] = 0

关于涉及单元邻居的两个相同形状的 numpy 数组之间的 Python 交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26484620/

相关文章:

python - 将给定向量 (B) 的每个值舍入为 A 中最接近的值

python - 添加 numpy 数组时避免溢出

python - 如何在web2py中访问临时上传的文件?

python - 将 panda 对象转换为 numpy 数组

php更改url的数组格式

c - 为什么不建议在 C 中使用指针进行数组访问

python - 将 numpy 数组映射到 pandas DataFrame 会导致 ValueError

python - 更改 matplotlib 中多个子图的 y 轴

python - 在不替换 Jinja 中的字符的情况下渲染 JSON

c# - 仅在数组中包含一个数字