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])
而不是@Divakars
np.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.        ])