简体   繁体   English

根据第一列对二维数组的行进行排序

[英]Sort rows of a 2D array, based on the first column

I want to sort the rows of a 2D array based on the elements of the first column, in Python 3. For example, if我想在 Python 3 中根据第一列的元素对二维数组的行进行排序。例如,如果

    x = array([[ 5. ,  9. ,  2. ,  6. ],
               [ 7. , 12. ,  3.5,  8. ],
               [ 2. ,  6. ,  7. ,  9. ]])

then I need the sorted array to be然后我需要排序的数组

    x = array([[ 2. ,  6. ,  7. ,  9. ],
               [ 5. ,  9. ,  2. ,  6. ],
               [ 7. , 12. ,  3.5,  8. ]])

How can I do that?我怎样才能做到这一点? A similar question was asked and answered here , but it does not work for me. 在这里提出并回答类似的问题,但它对我不起作用。

The following should work:以下应该工作:

import numpy as np
x = np.array([[ 5. ,  9. ,  2. ,  6. ],
               [ 7. , 12. ,  3.5,  8. ],
               [ 2. ,  6. ,  7. ,  9. ]])

x[x[:, 0].argsort()]
Out[2]:
array([[ 2. ,  6. ,  7. ,  9. ],
       [ 5. ,  9. ,  2. ,  6. ],
       [ 7. , 12. ,  3.5,  8. ]])

Documentation : numpy.argsort文档: numpy.argsort

#using sorted    
x = ([[5.,9.,2.,6. ], [7.,12.,3.5,8.], [2.,6.,7.,9.]])
x = sorted(x, key=lambda i: i[0]) #1st col 
print(x)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM