python - Numpy.sum() 将 (2,2,2...n) 的 nD 数组转换为形状 (2,) 的 1D 数组

标签 python arrays numpy numpy-ndarray

我想将 numpy.sum() 形状为 (2,2,2...n) 的 nD 数组(矩阵)转换为形状为 (2,) 的 1D 数组。

基本上沿着轴=0。 (将每个形状为 (2,) 的一维数组的第一个数字相加,并将相同数组的第二个数字相加为一个形状为 (2,) 的一维数组)。

然而,matrix.sum(axis=0) 似乎仅适用于形状 (2,2) 的形状,而我认为 matrix.sum(axis=(1,2)) 适用于 (2,2,2) 。那么 (2,2,2,2) 数组等等呢?

n 维一直让我感到困惑。如果有一个通用的解决方案以及简短的解释,我们将不胜感激。

编辑:我提供了一个我试图在下面求和的 nD 数组的示例。我想沿 axis=0 求和以获得 (2,) 一维数组。 numpy.sum(axis=0) 似乎只适用于形状为 (2,2) 的数组...

#Of shape (2,2):
[[9.99695358e-02 9.99232016e-01]
 [9.00030464e-01 7.67983971e-04]].sum(axis=0) seems to work

#Of shape (2,2,2):
[[[2.02737071e-01 7.75883149e-01]
  [2.02650032e-08 1.58192237e-02]]
 [[7.31718878e-06 1.41793363e-03]
  [4.12802168e-03 7.26350831e-06]]].sum(axis=(1,2)) seems to work

#Of shape… (2,2,2,2)
[[[[1.83819962e+00 1.02712560e-02]
   [5.05122135e-02 2.80555725e-04]]
  [[5.60304309e-07 5.44521143e-04]
   [2.41592380e-03 1.49436734e-05]]]
 [[[7.04398015e-05 7.66717944e-06]
   [1.76843337e-05 1.98868986e-06]]
  [[9.74010599e-02 1.12527543e-07]
   [2.61427056e-04 2.70778171e-08]]]].sum(axis=?) # What axis? And how to generalise?

最佳答案

您对将 x reshape 为二维并沿第二个轴求和有何看法?

x.reshape(x.shape[0], -1).sum(axis=1)

关于python - Numpy.sum() 将 (2,2,2...n) 的 nD 数组转换为形状 (2,) 的 1D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58980949/

相关文章:

python - 在不破坏 Django Flow 的情况下修改模型

python - 附加到 python/pandas 中的系列不起作用

Python SUDS 错误 - SAXParseException

mysql - SQL JSON 数组排序

python 和 NumPy : sum of an array slice

python - 将形状 (n,) 的数组转换为形状 (n,1) 的 numpy 数组

python - PIL for Python 3.2 on Windows 或替代品?

java - 在运行其他文件时使用另一个文件方法中的 java 变量

java - For(each) 循环两次填充组合框

python - 'numpy.ndarray' 对象如何不 'numpy.ndarray' 对象?