Python 三维numpy阵列切片上的谐波平均

Python 三维numpy阵列切片上的谐波平均,python,arrays,numpy,Python,Arrays,Numpy,给定一个三维数组,我想计算二维切片上的算术平均和调和平均 这可以使用numpy的算术平均值轻松完成: import numpy as np a = np.arange(5*3*3).reshape(5,3,3) np.mean(a,axis=(1,2)) 对于谐波平均,我必须自己切片三维数组。 我可以沿第一(0)轴执行此操作,例如: from scipy import stats b = a.reshape(np.shape(a)[0], -1) stats.hmean(b,axis=1)

给定一个三维数组,我想计算二维切片上的算术平均和调和平均

这可以使用numpy的算术平均值轻松完成:

import numpy as np
a = np.arange(5*3*3).reshape(5,3,3)
np.mean(a,axis=(1,2))
对于谐波平均,我必须自己切片三维数组。 我可以沿第一(0)轴执行此操作,例如:

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.平均值(1/a,轴=(0,2))
1/np.平均值(1/a,轴=(0,1))

你为什么不坚持使用numpy,然后这样做呢
1/np。平均值(1/a,轴=(1,2))
表示调和平均值?如果我对你的问题理解错误,请纠正我,太好了!是的,你说得对。我对切片想得太多了,以至于忽略了这个简洁的numpy解决方案。这就解决了我的问题(特别是因为几何平均数也有类似的技巧)。非常感谢你!很乐意帮忙!干杯对于其他类型的问题,我仍然对如何切片3D阵列感兴趣,以便保留中轴。然而,这个问题可以通过您的简单而友好的解决方案来解决。你想把它贴出来让我接受吗?再次感谢!你的快速回答对我帮助很大。为了完整起见,我添加了
1/np.mean(1/a,axis=(0,2))
用于垂直于中轴的平均值,
1/np.mean(1/a,axis=(0,1))
用于垂直于最后一个轴的平均值。感谢这些输入,我只是想给出一个想法,因为切片轴可以根据需要任意。是的,说得好。这是一个非常通用的答案。如果有人对几何平均值感兴趣,那么类似的技巧就是
np.exp(np.mean(np.log(a),axis=(0,2))
假设
a
的所有条目都是正的。