2014-09-06 55 views
1

我有2D numpy.array和指數的元組:排序numpy.array行由指數

a = array([[0, 0], [0, 1], [1, 0], [1, 1]]) 
ix = (2, 0, 3, 1) 

我怎麼能由指數陣列的行進行排序?預期結果:

array([[1, 0], [0, 0], [1, 1], [0, 1]]) 

我試着用numpy.take,但它的作品,因爲我與一維數組只期望。

回答

2

您實際上可以使用ndarray.take()。關鍵是要提供第二個參數(axis):

>>> a.take(ix, 0) 
array([[1, 0], 
     [0, 0], 
     [1, 1], 
     [0, 1]]) 

(無axis,陣列採取元素之前夷爲平地。)

或者:

>>> a[ix, ...] 
array([[1, 0], 
     [0, 0], 
     [1, 1], 
     [0, 1]]) 
+0

謝謝!我不知道「numpy.take」的第二個參數。 – niekas 2014-09-06 11:42:47