【发布时间】:2020-12-31 00:53:27
【问题描述】:
给定一个三维数组,我想计算二维切片上的算术平均值和谐波平均值。
这可以使用 numpy 的算术平均值轻松完成:
import numpy as np
a = np.arange(5*3*3).reshape(5,3,3)
np.mean(a,axis=(1,2))
对于调和平均,我必须自己对三维数组进行切片。 我可以沿着第一个(0th)轴这样做,例如:
from scipy import stats
b = a.reshape(np.shape(a)[0], -1)
stats.hmean(b,axis=1)
如何对我的三维数组进行整形/切片以计算垂直于其他轴的平均值(即,在轴 0 和 2 上或在轴 0 和 1 上的平均值)?
为了澄清,相应的算术平均值简单地由下式给出:
np.mean(a,axis=(0,2))
np.mean(a,axis=(0,1))
【问题讨论】:
-
你为什么不坚持使用 numpy 并这样做
1/np.mean(1/a, axis=(1,2))以获得谐波手段?如果我对您的问题的理解有误,请纠正我 -
太棒了!是的你是对的。我一直在考虑切片,以至于忽略了这个简洁的 numpy 解决方案。这解决了我的问题(特别是因为类似的技巧可用于几何平均值)。非常感谢!
-
很高兴为您提供帮助!干杯!
-
对于其他类型的问题,我仍然对如何对 3D 数组进行切片感兴趣,以便保留中轴。但是,这个问题可以通过您的简单而简单的解决方案来解决。你想把它贴出来让我接受吗?