【发布时间】:2022-01-08 16:26:28
【问题描述】:
我有一个相当大的矩形 numpy 数组,形状为 (m, n),例如:
>>> a.shape
(27584, 34092)
我必须计算数组中每个 anti-diagonal 的总和。这个新数组的形状为(m + n - 1,)。
简单的方法是这样做:
m, n = a.shape
r = np.zeros(m + n - 1)
for i in range(m):
for j in range(n):
r[i + j] += a[i][j]
# r is the sum of all anti-diagonals of a
这显然很慢,有没有办法使用聪明的 numpy 原语来执行计算?我唯一的其他选择是用 C++ 编写代码,这也是可行的 - 但需要更多的工作。
【问题讨论】:
标签: python numpy numpy-ndarray array-broadcasting