numpy排序顶部

时间:2014-11-19 14:20:11

标签: python sorting numpy scipy

我试图将前5%,最低5%和剩下的数据拉到单独的阵列中并保存平均值。我的代码如下。

    tg = 48000000 element float array
    tg.sort()
    pct = int(tg.size*0.05)
    high5 = tg[-pct:].mean()
    low5 = tg[:pct].mean()
    mid90 = tg[pct:-pct].mean()

我很感激有关如何提高速度的建议。

1 个答案:

答案 0 :(得分:2)

实际上,您不需要对数组进行完全排序。你可以使用分区方法:

tg = 48000000 element float array    
pct = int(tg.size*0.05)

tg.partition([pct, tg.size - pct]) 

mean_low5 = tg[:pct].mean()
mean_high5 = tg[-pct:].mean()
mean_mid90 = tg[pct:-pct].mean()

(代码根据Jaime的评论更新)