使用沿轴的多维权重进行Numpy平均

Spe*_*ill 4 python numpy

我有一个numpy数组a,a.shape=(48,90,144).我想利用的加权平均值a沿着使用阵列的权重的第一轴线b,b.shape=(90,144).所以输出应该是一个numpy形状的数组(48,).

我知道这可以通过列表理解来完成:

np.array([np.average(a[i], weights=b) for i in range(48)])
Run Code Online (Sandbox Code Playgroud)

但我想避免必须从列表转换回numpy数组.

有人可以帮忙吗?我确信这可能是使用numpy函数和切片,但我卡住了.谢谢!

Jai*_*ime 6

在一行中:

np.average(a.reshape(48, -1), weights=b.ravel()), axis=1)
Run Code Online (Sandbox Code Playgroud)

你可以测试它:

a = np.random.rand(48, 90, 144)
b = np.random.rand(90,144)
np.testing.assert_almost_equal(np.average(a.reshape(48, -1),
                                          weights=b.ravel(), axis=1),
                               np.array([np.average(a[i],
                                                    weights=b) for i in range(48)]))
Run Code Online (Sandbox Code Playgroud)