Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python numpy排序上下_Python_Sorting_Numpy_Scipy - Fatal编程技术网

Python numpy排序上下

Python numpy排序上下,python,sorting,numpy,scipy,Python,Sorting,Numpy,Scipy,我试图将顶部的5%、底部的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() 如果您能就如何加快速度提出建议,我将不胜感激。实际上,您不需要对阵列进行

我试图将顶部的5%、底部的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()

如果您能就如何加快速度提出建议,我将不胜感激。

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

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的评论进行了更新)

绝大多数时间都花在
排序
调用中。这是一个相当优化的算法,因此基本答案是您可能无法加快速度。您可能可以这样做。这是一个好主意(+1)
np。分区
可以占据一系列位置,即您可以执行
tg.partition([pct,tg.size pct])
,而不必担心对分区的secon调用会扰乱前一个分区的结果。当然,您也可以在第二次调用中执行
tg[pct:].partition(tg.size-2*pct)
,以避免第一次调用结果的混乱。