根据另一个索引数组

时间:2016-02-15 14:26:00

标签: python arrays numpy mean

假设我有一个如下所示的数组:

a = np.array([0, 20, 40, 30, 60, 35, 15, 18, 2])

我有一系列索引,我想平均之间:

averaging_indices = np.array([2, 4, 7, 8])

我想要做的是根据averaging_indices数组平均数组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。

1 个答案:

答案 0 :(得分:1)

这是一个带MSDN -

的矢量化方法
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.        ])

示例输入,输出 -

create nonclustered index IX1 where status=0