Сортировка массива numy по сумме - PullRequest
8 голосов
/ 30 августа 2011

Я хочу отсортировать массив 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 (a, idx) приводит к [2, 1, 3, 8].

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

Какой самый умныйи самый быстрый способ сделать это?

1 Ответ

5 голосов
/ 30 августа 2011

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

>>> 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]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...