Ваш circles
является двумерным массивом.Отображение без запятых - это обычный str
формат такого массива:
In [13]: print(circles)
[[876 566 6]
[898 574 6]
[846 710 6]
[850 762 7]
[822 574 6]
[880 620 6]
[894 650 6]
[836 604 6]]
In [14]: circles.shape
Out[14]: (8, 3)
In [15]: type(circles)
Out[15]: numpy.ndarray
In [16]: print(repr(circles))
array([[876, 566, 6],
[898, 574, 6],
[846, 710, 6],
[850, 762, 7],
[822, 574, 6],
[880, 620, 6],
[894, 650, 6],
[836, 604, 6]])
Я подозреваю, что под «обычным 2d-массивом» вы подразумеваете список списков.По крайней мере, это единственная вещь, похожая на массив, которая является стандартной в Python (если вы не импортируете редко используемый модуль array
):
In [18]: print(circles.tolist())
[[876, 566, 6], [898, 574, 6], [846, 710, 6], [850, 762, 7], [822, 574, 6], [880, 620, 6], [894, 650, 6], [836, 604, 6]]
Один из способов сортировки по первому столбцу - нам np.argsort
получить индекс:
In [25]: idx = np.argsort(circles[:,0])
In [26]: idx
Out[26]: array([4, 7, 2, 3, 0, 5, 6, 1])
In [27]: sc = circles[idx,:]
In [28]: sc
Out[28]:
array([[822, 574, 6],
[836, 604, 6],
[846, 710, 6],
[850, 762, 7],
[876, 566, 6],
[880, 620, 6],
[894, 650, 6],
[898, 574, 6]])
Используя Python sorted
:
In [31]: sorted(circles, key=lambda x: x[0])
Out[31]:
[array([822, 574, 6]),
array([836, 604, 6]),
array([846, 710, 6]),
array([850, 762, 7]),
array([876, 566, 6]),
array([880, 620, 6]),
array([894, 650, 6]),
array([898, 574, 6])]
или если мы сначала конвертируем circles
во вложенный список:
In [32]: sorted(circles.tolist(), key=lambda x: x[0])
Out[32]:
[[822, 574, 6],
[836, 604, 6],
[846, 710, 6],
[850, 762, 7],
[876, 566, 6],
[880, 620, 6],
[894, 650, 6],
[898, 574, 6]]