Python 根据另一个索引数组对一个数组求平均值
假设我有一个如下所示的数组:Python 根据另一个索引数组对一个数组求平均值,python,arrays,numpy,mean,Python,Arrays,Numpy,Mean,假设我有一个如下所示的数组: a = np.array([0, 20, 40, 30, 60, 35, 15, 18, 2]) 我有一个指数数组,我想在以下两个之间取平均值: averaging_indices = np.array([2, 4, 7, 8]) 我想做的是根据平均值数组对数组a的元素求平均值。为了说明这一点,我想取平均值: np.mean(a[0:2]), np.mean(a[2:4]), np.mean(a[4:7]), np.mean(a[7,8]), np.mean(a
a = np.array([0, 20, 40, 30, 60, 35, 15, 18, 2])
我有一个指数数组,我想在以下两个之间取平均值:
averaging_indices = np.array([2, 4, 7, 8])
我想做的是根据平均值数组对数组a的元素求平均值。为了说明这一点,我想取平均值:
np.mean(a[0:2]), np.mean(a[2:4]), np.mean(a[4:7]), np.mean(a[7,8]), np.mean(a[8:])
在本例中,我想返回一个具有正确维数的数组
result = [10, 35, 36.66, 18, 2]
有人能想出一个好办法吗?我能想象的唯一方式是通过循环,这是非常反numpy的 这是一种矢量化方法- 样本输入、输出-
In [60]: a
Out[60]: array([ 0, 20, 40, 30, 60, 35, 15, 18, 2])
In [61]: averaging_indices
Out[61]: array([2, 4, 7, 8])
In [62]: out
Out[62]: array([ 10. , 35. , 36.66666667, 18. , 2. ])
我认为应该使用
np.mean(a[8:-1])
而不是@Divakarsnp.mean(a[8:])
还是要排除最后一个索引?你只是不想要一个循环还是速度是个问题?对不起,我的意思是不应该是。。。np.mean(a[7:8]),np.mean(a[8:]),正如@MSeifert?所提到的,同样,np.mean(a[4:7])
结果是36.66
。
In [60]: a
Out[60]: array([ 0, 20, 40, 30, 60, 35, 15, 18, 2])
In [61]: averaging_indices
Out[61]: array([2, 4, 7, 8])
In [62]: out
Out[62]: array([ 10. , 35. , 36.66666667, 18. , 2. ])