gpt4 book ai didi

python - Numpy:像列表列表一样对矩阵进行排序,或者:按行对矩阵进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:07 24 4
gpt4 key购买 nike

我有一个包含行向量的 numpy 矩阵。我想按行对矩阵进行排序,就像 Python 对列表的列表进行排序一样:

import numpy as np
def sortx(a):
return np.array(sorted([list(i) for i in a]))

a = np.array([[1,4,0,2],[0,2,3,1]])
print(sortx(a))

输出:

[[0 2 3 1]
[1 4 0 2]]

是否有与我的 sortx() 函数等效的 numpy,这样我就不必将数据转换两次?

最佳答案

你可以尝试使用numpy的lexsort:

a=a[np.lexsort(a[:,::-1].T)]

在我的机器上,当应用于 4x4 矩阵时,这比您的 sortx 方法快四倍。在 100 行的矩阵上,速度差异更加显着。

arr=np.random.randint(0,100,(100,4))
%timeit np.lexsort(arr[:,::-1].T)
#6.29 µs +- 27.1ns
% timeit sortx(arr)
# 112µs +- 1.2µs

编辑:

Andyk 建议改进 sortx() 方法。

def sortx_andyk(a):
return np.array(sorted(a.tolist())

这个方法的时机:

%timeit sortx_andryk(arr)
# 43µs +- 169ns

关于python - Numpy:像列表列表一样对矩阵进行排序,或者:按行对矩阵进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52815658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com