Numpy - 平均二维数组的多列

use*_*386 5 python numpy

现在我通过迭代来做到这一点,但必须有一种方法来使用 numpy 函数来完成这个任务。我的目标是一次获取一个 2D 数组并平均 J 列,生成一个新数组,其行数与原始数组相同,但具有列数/J 列。

所以我想采取这个:

J = 2 // two columns averaged at a time

[[1 2 3 4]
 [4 3 7 1]
 [6 2 3 4]
 [3 4 4 1]]
Run Code Online (Sandbox Code Playgroud)

并产生这个:

[[1.5 3.5]
 [3.5 4.0]
 [4.0 3.5]
 [3.5 2.5]]
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来完成这个任务?我还需要一种方法,如果我永远不会得到非平均余数列。因此,例如,如果我有一个包含 5 列且 J=2 的输入数组,我将平均前两列,然后是后三列。

您能提供的任何帮助都会很棒。

The*_*eke 4

data.reshape(-1,j).mean(axis=1).reshape(data.shape[0],-1)
Run Code Online (Sandbox Code Playgroud)

如果你的j分歧data.shape[1],那就是。

例子:

In [40]: data
Out[40]: 
array([[7, 9, 7, 2],
       [7, 6, 1, 5],
       [8, 1, 0, 7],
       [8, 3, 3, 2]])

In [41]: data.reshape(-1,j).mean(axis=1).reshape(data.shape[0],-1)
Out[41]: 
array([[ 8. ,  4.5],
       [ 6.5,  3. ],
       [ 4.5,  3.5],
       [ 5.5,  2.5]])
Run Code Online (Sandbox Code Playgroud)