2011-03-03 26 views
5

De acuerdo con el comportamiento por defecto docs de numpy es que las matrices de índice por primera vez por filas y luego por columnas:numpy - 2d indexación de matrices

a = numpy.arange(6).reshape(3,2) 

[[0 1] 
[2 3] 
[4 5]] 

print a[0][1] # is 1 

Quiero índice de la matriz mediante la convención orientada geométricamente a[x][y], como en x- eje y eje y ¿Cómo puedo cambiar el orden de indexación sin modificar la forma de la matriz para que a[0][1] devuelva 2?

+0

Tomé prestada la terminología de los documentos (consulte el enlace): "La notación matricial usa el primer índice para indicar qué fila se está seleccionando y el segundo índice para indicar qué columna se selecciona. Esto es opuesto a la convención orientada geométricamente para imágenes donde la gente generalmente piensa que el primer índice representa la posición x (es decir, la columna) y el segundo representa la posición y (es decir, la fila) " – armandino

+0

No importa, estaba pensando en otra cosa. – NullUserException

+3

Al igual que una nota, al indexar matrices multidimensionales, debe usar la notación a [i, j] en lugar de [i] [j]. Encuentro en mi máquina que el último es 2 veces más lento. – JoshAdel

Respuesta

8

Puede escribir a.T[0,1] para usar los índices de la transposición de la matriz, que son al revés en 2D.

+0

¿Esto crea una nueva matriz transpuesta cada vez que accedo usando esta notación? – armandino

+2

El '.T' solo crea una vista de la matriz original, por lo que no está copiando datos. Debería ser relativamente rápido. – JoshAdel

+0

Lo tengo. ¡Gracias una vez más! – armandino

Cuestiones relacionadas