Tengo una matriz numpy 2D de forma (N, 2) que tiene N puntos (coordenadas xey). Por ejemplo:Ordenar un conjunto numpy 2D por varios ejes
array([[3, 2],
[6, 2],
[3, 6],
[3, 4],
[5, 3]])
me gustaría a solucionar el problema de tal manera que mis puntos están clasificadas por coordenada x, y luego por y en los casos en que la coordenada x es el mismo. Por lo que la gama anterior debería tener este aspecto:
array([[3, 2],
[3, 4],
[3, 6],
[5, 3],
[6, 2]])
Si esto era una lista de Python normal, yo simplemente definir un comparador para hacer lo que quiera, pero por lo que puedo decir, función de clasificación de numpy no lo hace aceptar comparadores definidos por el usuario. ¿Algunas ideas?
EDIT: Gracias por las ideas! Configuré un caso de prueba rápido con 1000000 puntos enteros aleatorios y comparaté los que podía ejecutar (lo siento, no puedo actualizar el numpy en este momento).
Mine: 4.078 secs
mtrw: 7.046 secs
unutbu: 0.453 secs
Ah, había visto Lexsort en los documentos, pero no pude entender cómo se aplicaría a este problema. ¡Gracias! – perimosocordiae
Sí, a menudo tengo dificultades para comprender la documentación. Los ejemplos tienden a ser mucho más esclarecedores. El problema es que, después de jugar con ejemplos, volví a leer los documentos y descubrí que los documentos estaban perfectamente claros ... :-) – unutbu
Esto está haciendo una copia de la matriz, ¿no? – g33kz0r