mar*_*ues 4 python numpy vectorization mean multidimensional-array
我想以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()
Run Code Online (Sandbox Code Playgroud)
use*_*ica 12
如果你有一个足够新的NumPy,你可以做到
m_mean = m.mean(axis=(1, 2))
Run Code Online (Sandbox Code Playgroud)
我相信这是在1.7中引入的,虽然我不确定.文档仅在1.10中进行了更新以反映这一点,但它的工作时间早于此.
如果您的NumPy太旧,您可以手动更多地取平均值:
m_mean = m.sum(axis=2).sum(axis=1) / np.prod(m.shape[1:3])
Run Code Online (Sandbox Code Playgroud)
这些都会产生一维结果.如果你真的想要额外的长度为1的轴,你可以做一些类似于m_mean = m_mean[:, np.newaxis]将额外轴放在那里的东西.