NumPy中多轴的平均值

时间:2015-11-05 18:32:26

标签: python numpy multidimensional-array vectorization mean

我想以Pythonic的方式编写下面的代码,在两个轴上应用均值。最好的方法是什么?

    import numpy as np

    m = np.random.rand(30, 10, 10)  

    m_mean = np.zeros((30, 1))

        for j in range(30):

            m_mean[j, 0] = m[j, :, :].mean()

2 个答案:

答案 0 :(得分:11)

如果你有一个足够近期的NumPy,你可以做

m_mean = m.mean(axis=(1, 2))

我相信这是在1.7中引入的,虽然我不确定。该文档仅在1.10中进行了更新以反映这一点,但它的工作时间早于此。

如果你的NumPy太旧了,你可以手动更加平均值:

m_mean = m.sum(axis=2).sum(axis=1) / np.prod(m.shape[1:3])

这些都会产生一维结果。如果你真的想要这个额外的长度为1的轴,你可以做m_mean = m_mean[:, np.newaxis]这样的事情来把额外的轴放在那里。

答案 1 :(得分:0)

您还可以使用numpy.mean() ufunc并将输出数组作为参数传递给out=,如下所示:

np.mean(m, axis=(1, 2), out=m_mean)