Сортировка массива python/повторение по столбцу

У меня довольно простой вопрос о том, как отсортировать весь массив/редирект по данному столбцу. Например, учитывая массив:

import numpy as np
data = np.array([[5,2], [4,1], [3,6]])

Я хотел бы сортировать данные по первому столбцу для возврата:

array([[3,6], [4,1], [5,2]])

Ответ 1

Используйте data[np.argsort(data[:, 0])] где 0 - индекс столбца, по которому нужно сортировать:

In [27]: import numpy as np

In [28]: data = np.array([[5,2], [4,1], [3,6]])

In [29]: col = 0

In [30]: data=data[np.argsort(data[:,col])]
Out[30]: 
array([[3, 6],
       [4, 1],
       [5, 2]])

Ответ 2

вы ищете operator.itemgetter

>>> from operator import itemgetter, attrgetter

>>> sorted(student_tuples, key=itemgetter(2))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

>>> sorted(student_objects, key=attrgetter('age'))
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]

т.е.

In [7]: a
Out[7]: [[5, 2], [4, 1], [3, 6]]

In [8]: sorted(a, key=operator.itemgetter(0))
Out[8]: [[3, 6], [4, 1], [5, 2]]

Ответ 4

Для сортировки во втором столбце используйте itemgetter

>>> from operator import itemgetter
>>> data = [[5,2], [4,1], [3,6]]
>>> sorted(data)
[[3, 6], [4, 1], [5, 2]]
>>> sorted(data,key=itemgetter(1))
[[4, 1], [5, 2], [3, 6]]
>>>