我试图将前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()
我很感激有关如何提高速度的建议。
答案 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的评论更新)