现在我通过迭代来做到这一点,但必须有一种方法来使用 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 的输入数组,我将平均前两列,然后是后三列。
您能提供的任何帮助都会很棒。
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)