2017-12-24 9 views
0

으로 정렬합니다. 이것은 매우 쉬울 지 몰라도 조금 어려움을 겪고 있습니다.2D NumPy 배열을 열

array([[1. , 3.9], 
     [2. , 3.8], 
     ... , 
     [20. , 1.5]]) 

np.sort대로 작동하지 않는 것 다음과 같이

array([[ 5.  , 3.40166205], 
    [ 10.  , 2.72778882], 
    [ 15.  , 2.31881804], 
    [ 20.  , 2.50643777], 
    [ 1.  , 3.94076063], 
    [ 2.  , 3.80598599], 
    [ 3.  , 3.67121134], 
    [ 6.  , 3.2668874 ], 
    [ 7.  , 3.13211276], 
    [ 8.  , 2.99733811], 
    [ 9.  , 2.86256347], 
    [ 11.  , 2.64599467], 
    [ 12.  , 2.56420051], 
    [ 13.  , 2.48240635], 
    [ 14.  , 2.4006122 ], 
    [ 16.  , 1.8280531 ], 
    [ 17.  , 1.74625894], 
    [ 18.  , 1.66446479], 
    [ 19.  , 1.58267063], 
    [ 20.  , 1.50087647]]) 

을 다음과 같이 나는 데이터 구조를하고 난 첫 번째 열을 정렬 할 ... 그래서이 주문한 배열을 평면 구조로 이동시킵니다. 나는 또한 사용했습니다 itemgetter

그러나 이것은 내가 원하는 결과를 제공하지 않습니다.

감사합니다.

답변

2

이것은 일반적인 수치스러운 숙어입니다. argsort (첫 번째 열에 있음) + numpy 색인 생성 -

x[x[:, 0].argsort()] 

array([[ 1.  , 3.94076063], 
     [ 2.  , 3.80598599], 
     [ 3.  , 3.67121134], 
     [ 5.  , 3.40166205], 
     [ 6.  , 3.2668874 ], 
     [ 7.  , 3.13211276], 
     [ 8.  , 2.99733811], 
     [ 9.  , 2.86256347], 
     [ 10.  , 2.72778882], 
     [ 11.  , 2.64599467], 
     [ 12.  , 2.56420051], 
     [ 13.  , 2.48240635], 
     [ 14.  , 2.4006122 ], 
     [ 15.  , 2.31881804], 
     [ 16.  , 1.8280531 ], 
     [ 17.  , 1.74625894], 
     [ 18.  , 1.66446479], 
     [ 19.  , 1.58267063], 
     [ 20.  , 2.50643777], 
     [ 20.  , 1.50087647]])