python - 二维索引和总和的 numpy 数组

标签 python arrays numpy matrix indexing

我有一个疑问。有没有一种有效的方法可以在不使用多个条件的情况下对 numpy 矩阵的所有邻居求和?

这是一个例子:

array([[5, 4, 8, 3, 1, 4, 3, 2, 2, 3],
       [2, 7, 4, 5, 8, 5, 4, 7, 1, 1],
       [5, 2, 6, 4, 5, 5, 6, 1, 7, 3],
       [6, 1, 4, 1, 3, 3, 6, 1, 4, 6],
       [6, 3, 5, 7, 3, 8, 5, 4, 7, 8],
       [4, 1, 6, 7, 5, 2, 4, 6, 4, 5],
       [2, 1, 7, 6, 8, 4, 1, 7, 2, 1],
       [6, 8, 8, 2, 8, 8, 1, 1, 3, 4],
       [4, 8, 4, 6, 8, 4, 8, 5, 5, 4],
       [5, 2, 8, 3, 7, 5, 1, 5, 2, 6]])

当我运行m[0][-1]时,它返回3而不是错误,所以如果我想将1添加到一个值的所有邻居中,我需要使用很多条件,因为我不能只使用 m[0][-1] 因为在这种情况下以及在角的其他情况下,它只返回给我一个“虚假邻居”

最佳答案

IIUC,您想要给具有给定值的像元的每个邻居加 1。

例如,我们将 7 附近的每个像元加 1:

from scipy.signal import convolve2d
v = np.array([[1,1,1],[1,0,1],[1,1,1]])
a + convolve2d(a==7, v, mode='same')

输出:

array([[6, 5, 9, 3, 1, 4, 4, 3, 3, 3],
       [3, 7, 5, 5, 8, 5, 5, 8, 3, 2],
       [6, 3, 7, 4, 5, 5, 7, 3, 8, 4],
       [6, 1, 5, 2, 4, 3, 6, 3, 6, 8],
       [6, 3, 7, 8, 5, 8, 5, 5, 7, 9],
       [4, 2, 9, 9, 7, 2, 5, 8, 6, 6],
       [2, 2, 8, 8, 9, 4, 2, 7, 3, 1],
       [6, 9, 9, 3, 8, 8, 2, 2, 4, 4],
       [4, 8, 4, 7, 9, 5, 8, 5, 5, 4],
       [5, 2, 8, 4, 7, 6, 1, 5, 2, 6]])

关于python - 二维索引和总和的 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70316300/

相关文章:

python - 在Python中逐行将json-ish列表写入csv以获取比特币地址

python - OpenCV Python:cv2.findContours返回许多轮廓

python - 子类没有正确地从父类(super class)继承结构

javascript - 使用嵌套在两个键内的 JSON 代码创建一个数组

python - 在python中使用stats进行二项式分布的随机实验

python - NumPy:用于切片列表的一维 numpy 数组

python - 假设多对多关系(sqlalchemy,python),如何避免添加重复项?

php - 删除当前年份之前的数组项目

arrays - Array Ruby 中实例变量的总和

numpy - 如何通过固定索引将 4D numpy 数组转换为 2D