我很难找到正确的方法来执行我认为使用numpy的琐碎工作。我有一个数组(1000x1000),我想计算整个数组中特定模式的总和。
例如:
如果我有这个数组,并想计算一个右两个单元格的对角线的总和,我会期望[7,12,11,8,12,6,11,7]
(总共8个总和)。
我怎样才能做到这一点?
最佳答案
此操作称为二维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/