python - numpy:沿除最后一个轴之外的所有轴求和

标签 python numpy

如果我有 ndarray任意形状,我想计算除最后一个轴以外的所有轴的总和,例如,通过执行

all_but_last = tuple(range(arr.ndim - 1))
sum = arr.sum(axis=all_but_last)

现在,tuple(range(arr.ndim - 1))我的感觉并不完全直观。有没有更优雅/numpy-esque 的方式来做到这一点?

此外,如果我想为多个不同形状的数组执行此操作,我将不得不为每个数组计算一个单独的维度元组。有没有更规范的方式来表达“不管尺寸是多少,只给我一个轴”?

最佳答案

您可以 reshape 数组,使除最后一个轴之外的所有轴都变平(例如,形状 (k, l, m, n) 变为 (k*l*m, n)),然后在第一个轴上求和。

例如,这是您的计算:

In [170]: arr.shape
Out[170]: (2, 3, 4)

In [171]: arr.sum(axis=tuple(range(arr.ndim - 1)))
Out[171]: array([2.85994792, 2.8922732 , 2.29051163, 2.77275709])

这是替代方案:
In [172]: arr.reshape(-1, arr.shape[-1]).sum(axis=0)
Out[172]: array([2.85994792, 2.8922732 , 2.29051163, 2.77275709])

关于python - numpy:沿除最后一个轴之外的所有轴求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51711170/

相关文章:

python - 图像的 RGB 矩阵

python - 两个数据点的 numpy polyfit 协方差

python - 如何为 Flask 后单元测试 Python 复制 Multidict

python - Multiprocessing Pool 非阻塞检测完成的任务

python - 使用Vue + Django模板语言时如何解决双花括号问题?

python - 使用 Python 写入以 MySQL 数据为源的 HTML 文件?

Python 将特殊字符记录到文件会抛出异常

python - 在 python 中替换重复 np.vstack 的有效方法?

python - 获取与numpy中另一个数组的元素相对应的数组元素

python - 在 GAE 标准环境 (Python 27) 上安装 Numpy (v1.9.0)、Pandas 和 SKlearn