Mam dwuwymiarową macierz kształtu (N, 2), która trzyma N punktów (współrzędne x i y). Na przykład:Sortowanie dwuwymiarowej macierzy 2D przez wiele osi
array([[3, 2],
[6, 2],
[3, 6],
[3, 4],
[5, 3]])
Chciałbym uporządkować to taki, że moje punkty są sortowane według współrzędna x, a następnie przez Y w przypadkach, gdy współrzędna X jest taka sama. Więc tablica powyżej powinien wyglądać następująco:
array([[3, 2],
[3, 4],
[3, 6],
[5, 3],
[6, 2]])
Jeśli to był normalny lista Python, chciałbym po prostu zdefiniować komparator robić to, co chcę, ale o ile mogę powiedzieć, funkcja sortowania numpy nie robi akceptuj kompilatory zdefiniowane przez użytkownika. Jakieś pomysły?
EDYCJA: Dzięki za pomysły! Przygotowałem szybki test z 1000000 losowymi liczbami całkowitymi i przetestowałem te, które mogłem uruchomić (przykro mi, nie można uaktualnić numpy w tej chwili).
Mine: 4.078 secs
mtrw: 7.046 secs
unutbu: 0.453 secs
Ah, widziałem lexsort w dokumentach, ale nie mogłem dowiedzieć się, jak to będzie miało zastosowanie do tego problemu. Dzięki! – perimosocordiae
Tak, często mam trudności ze zrozumieniem dokumentacji. Przykłady wydają się być o wiele bardziej pouczające. Problem polega na tym, że po odtworzeniu przykładów ponownie przeczytałem dokumenty i stwierdziłem, że dokumenty były całkowicie jasne ... :-) – unutbu
To robi kopię tablicy, nie? – g33kz0r