python - 跨数组求和模式

标签 python python-3.x numpy

我很难找到正确的方法来做一些我认为使用 numpy 应该很简单的事情。我有一个数组 (1000x1000),我想计算数组中特定模式的总和。

例如:

如果我有这个数组,并且想要计算两个单元格右对角线的总和,我希望 [7,12,11,8,12,6,11,7] (共8笔)。

enter image description here

我该怎么做?

最佳答案

此操作称为二维 convolution :

>>> import numpy as np
>>> from scipy.signal import convolve2d
>>> kernel = np.eye(2, dtype=int)
>>> a = np.array([[5,3,7,1,2],[3,2,9,4,7],[8,9,4,2,3]])
>>> convolve2d(a, kernel, mode='valid')
array([[ 7, 12, 11,  8],
       [12,  6, 11,  7]])

如果您想将其推广到任意维度,还有 scipy.ndimage.convolve可用的。它也适用于这种 2d 情况,但不提供 mode='valid' 便利。

关于python - 跨数组求和模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52246983/

相关文章:

python - 如何在 PyGTK 中向 button.connect 添加额外的参数?

python - 从 IPython notebook 运行 MRJob

python - 使用 Pandas 进行 bool 索引对我不起作用

python - 根据复杂条件选择和重新分配数组中元素的最快方法

python - 洗牌数据框

python - 如何在 Pycharm 的 Google 风格 Pydoc 中表示返回类型元组?

python-3.x - 信号量 Python 是如何工作的

python - 如何实时读取html并循环插入MySQL?

Python 相对路径 - ModuleNotFoundError

python - 使用 OpenCV/Numpy 展平图像背景