2011-08-29 2 views
6

Я хочу отсортировать массив numpy в соответствии с суммой. Нечто подобноеСортировка массива numpy по сумме

import numpy as np 
a = np.array([1,2,3,8], [3,0,2,1]) 
b = np.sum(a, axis = 0) 
idx = b.argsort() 

Теперь np.take (а, IDX) приводит к [2, 1, 3, 8].

Но я хотел бы массив: результат = np.array ([2, 1, 3, 8], [0, 3, 2, 1]]

Самый умный и быстрый способ ? сделать что

ответ

5

с тем же кодом из вашего вопроса, вы можете просто использовать дополнительный axis аргумент для np.take (по умолчанию используется двумерный массив, что причина, вы получили только первую строку, см documentation):

>>> np.take(a, idx, axis=1) 
array([[2, 1, 3, 8], 
     [0, 3, 2, 1]]) 

Или вы можете использовать причудливую индексацию:

>>> a[:,idx] 
array([[2, 1, 3, 8], 
     [0, 3, 2, 1]]) 
Смежные вопросы