сортировать массив в python3, используя numpy

1

У меня есть массив numpy с формой (N, 9).

например:

[[1579.0, 483.0, 1949.0, 407.0, 1959.0, 454.0, 1589.0, 531.0, 0.33], 
 [1613.0, 1115.0, 1995.0, 1093.0, 1998.0, 1137.0, 1616.0, 1159.0, 0.16],   
 [904.0, 1417.0, 1068.0, 1420.0, 1067.0, 1461.0, 904.0, 1458.0, 0.31], 
 [1583.0, 479.0, 1950.0, 401.0, 1961.0, 452.0, 1593.0, 530.0, 0.33], 
 [1604.0, 482.0, 1943.0, 407.0, 1954.0, 454.0, 1614.0, 530.0, 0.13], 
 [908.0, 1418.0, 1064.0, 1421.0, 1064.0, 1458.0, 907.0, 1456.0, 0.21]]

Я хочу отсортировать этот массив на основе первого числа в каждой строке. в другом слове, основанном на первом числе из второго измерения.

результат должен быть:

[[904.0, 1417.0, 1068.0, 1420.0, 1067.0, 1461.0, 904.0, 1458.0, 0.31],
 [908.0, 1418.0, 1064.0, 1421.0, 1064.0, 1458.0, 907.0, 1456.0, 0.21]
 [1579.0, 483.0, 1949.0, 407.0, 1959.0, 454.0, 1589.0, 531.0, 0.33], 
 [1583.0, 479.0, 1950.0, 401.0, 1961.0, 452.0, 1593.0, 530.0, 0.33],
 [1604.0, 482.0, 1943.0, 407.0, 1954.0, 454.0, 1614.0, 530.0, 0.13],
 [1613.0, 1115.0, 1995.0, 1093.0, 1998.0, 1137.0, 1616.0, 1159.0, 0.16]   
 ]

как я могу сделать это в python

Теги:
arrays
numpy
python-3.x
sorting

1 ответ

0
Лучший ответ

С NumPy вы можете использовать argsort с первым столбцом:

import numpy as np

A = np.array(L)
res = A[A[:, 0].argsort()]

Со списком вы можете использовать sorted с operator.itemgetter:

from operator import itemgetter

res = sorted(L, key=itemgetter(0))

print(res)

[[904.0, 1417.0, 1068.0, 1420.0, 1067.0, 1461.0, 904.0, 1458.0, 0.31],
 [908.0, 1418.0, 1064.0, 1421.0, 1064.0, 1458.0, 907.0, 1456.0, 0.21],
 [1579.0, 483.0, 1949.0, 407.0, 1959.0, 454.0, 1589.0, 531.0, 0.33],
 [1583.0, 479.0, 1950.0, 401.0, 1961.0, 452.0, 1593.0, 530.0, 0.33],
 [1604.0, 482.0, 1943.0, 407.0, 1954.0, 454.0, 1614.0, 530.0, 0.13],
 [1613.0, 1115.0, 1995.0, 1093.0, 1998.0, 1137.0, 1616.0, 1159.0, 0.16]]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню