Otra forma de indexar en Python
Estoy siguiendo un curso de aprendizaje automático y, en una revisión de la biblioteca numpy, se utiliza un método de indexación que nunca antes había visto. Definimos a = np.array([[1,2],[3,4],[5,6]]). Dos nuevas matrices se crean posteriormente: np.array([a[0,0], a[1,1], a[2,1]]. Esta es la forma de indexación que conozco. La forma de indexación que no sé es esto: print(a[[0,1,2],[0,1,1]]). ¿Podría alguien ayudarme con una explicación sobre esta última forma de indexación?
Respuestas
Cuando nse pasan matrices, donde nes el número de dimensiones de matriz, se utilizan como índices para las dimensiones correspondientes. a[[0,1,2],[0,1,1]]es equivalente a[a[0,0], a[1,1], a[2,1]]
Permítanme citar numerosos documentos:
... De cada fila, se debe seleccionar un elemento específico. El índice de la fila es solo [0, 1, 2] y el índice de la columna especifica el elemento a elegir para la fila correspondiente, aquí [0, 1, 0]. Usando ambos juntos, la tarea se puede resolver usando indexación avanzada:
x = np.array([[1, 2], [3, 4], [5, 6]])
x[[0, 1, 2], [0, 1, 0]]
array([1, 4, 5])
Llama a indexación de matrices de enteros . En su ejemplo, está accediendo a [[0,1,2],[0,1,1]]índices de una matriz 1x3, llamada a. Significa que estás obteniendo de a:
[
the first element of the first array,contained in this 1x3 array,
the second element of the second array, contained in this big array,
the second element of the third array, contained in the same array
]
Imprimir, obtendrá la salida de [1 4 6], porque esos son los elementos en las posiciones especificadas ( (0,0), (1,1), (2,1)). Puede visualizarlo como un esquema de columnas y filas :
[[rows],[colums]] # vertically speaking
Seleccione las filas de los elementos que desea en la primera submatriz y las columnas en la segunda.