我正在尝试在Python中对大量数组进行排序。 我需要一次对超过1100万个数组进行排序。
此外,如果我能够直接获得将对数组进行排序的索引,那就太好了。
因此,目前我正在使用numpy.argsort(),但它在我的计算机上速度太慢(需要一个多小时才能运行)。
同一台计算机上,在R中进行相同的操作大约需要15分钟。
有人能告诉我在Python中更快的方法吗?
谢谢
编辑:
添加示例
如果我有以下数据框:
因此,我的输出数据框将如下所示:
此外,如果我能够直接获得将对数组进行排序的索引,那就太好了。
因此,目前我正在使用numpy.argsort(),但它在我的计算机上速度太慢(需要一个多小时才能运行)。
同一台计算机上,在R中进行相同的操作大约需要15分钟。
有人能告诉我在Python中更快的方法吗?
谢谢
编辑:
添加示例
如果我有以下数据框:
agg:
x y w z
1 2 2 5
1 2 6 7
3 4 3 3
5 4 7 8
3 4 2 5
5 9 9 9
我正在运行以下函数和命令:
def fucntion(group):
z = group['z'].values
w = group['w'].values
func = w[np.argsort(z)[::-1]][:7] #i need top 7 in case there are many
return np.array_str(func)[1:-1]
output = agg.groupby(['x,'y']).apply(function).reset_index()
因此,我的输出数据框将如下所示:
output:
x y w
1 2 6,2
3 4 2,3
5 4 7
5 9 9
argsort
函数中的axis
参数? - user2357112