我想得到一个数组,它是数组中子矩阵的总和。
例如,假设我们有一个 3x3 矩阵,其中每个项目都包含一个 2x2 子矩阵:
matrix = np.array([[[[1,2],[3,4]], [[5,6],[7,8]], [[9,10],[11,12]]],
[[[13,14],[15,16]], [[17,18],[19,20]], [[21,22],[23,24]]],
[[[25,26],[27,28]], [[29,30],[31,32]], [[33,34],[35,36]]]])
看起来像:
[[[[ 1 2]
[ 3 4]]
[[ 5 6]
[ 7 8]]
[[ 9 10]
[11 12]]]
[[[13 14]
[15 16]]
[[17 18]
[19 20]]
[[21 22]
[23 24]]]
[[[25 26]
[27 28]]
[[29 30]
[31 32]]
[[33 34]
[35 36]]]]
获得答案的一种方法是使用列表理解
ans = [ [ np.sum(sub_matrices) for sub_matrices in row ] for row in matrix ]
这将是:
[[10, 26, 42], [58, 74, 90], [106, 122, 138]]
我想知道是否有更好的方法来获得这个结果。也许使用一些内置的 numpy 函数?
最佳答案
使用 einsum
这在这种情况下比传统的 sum
更快:
np.einsum('ijkl->ij',matrix)
array([[ 10, 26, 42],
[ 58, 74, 90],
[106, 122, 138]])
关于python - 是否有一个 numpy 函数来获取子矩阵的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53166563/