2014-09-06 4 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, но он работает, как я ожидаю только 1D массивов.

ответ

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

Смежные вопросы