【发布时间】:2016-08-26 04:21:10
【问题描述】:
我需要找到一个单元格的所有相邻元素的总和,比如getsumofneighbors(matrix, i, j):
'M*N matrix'
[[0 1 0]
[2 0 1]
[0 4 0]
[0 0 0]]
单元格[0][0]的最近元素之和为3
[1][0] 是 5
[1][1] 是 8
是否有一个 python 库来查找给定单元格旁边的所有元素的总和?
【问题讨论】:
-
最简单(可能也是最快)的方法是将其视为 1s 的 3x3 内核的卷积,这可以在 scipy 中使用 uniform_filter 完成,也可能使用其他方法。 ..哦,您必须减去原始矩阵,以免包含 3x3 内核中心的值。
-
您也可以只使用索引来汇总 8 个偏移版本,尽管这有点混乱并且需要多次遍历内存中的数据。
out = np.zeros_like(A); out[1:,1:] += A[:-1,:-1];等 -
@dan-man 您描述的是在您发表评论前 2 小时发布的解决方案。
-
@piRSquared - 您指的是您的解决方案吗?这和我说的不一样。我的两个建议都试图同时评估数组中 all 条目的总和(即矢量化),而您的答案一次给出一个条目的总和(这实际上可能是OP想要)。