Indexación de Arreglos Enteros
Desliza para mostrar el menú
Además del indexado básico, donde se utiliza un entero para un solo índice, NumPy también permite utilizar un arreglo unidimensional de enteros completo (también es posible una lista de enteros) para el indexado.
Indexado con arreglos de enteros en arreglos 1D
Cada elemento del arreglo de enteros utilizado para el indexado se trata como un índice, por lo que, por ejemplo, array[[0, 1, 3]] recupera los elementos en los índices 0, 1 y 3 en forma de un arreglo unidimensional, dado que array es un arreglo 1D. También se pueden usar arreglos de NumPy para el indexado, pero esto hace que el código sea más engorroso.
12345678import numpy as np array = np.array([23, 41, 7, 80, 3]) # Retrieving elements at indices 0, 1 and 3 print(array[[0, 1, 3]]) # Retrieving elements at indices 1, -1 and 2 in this order print(array[[1, -1, 2]]) # IndexError is thrown since index 5 is out of bounds print(array[[2, 5]])
Indexación de arreglos enteros en arreglos 1D
En el caso de arreglos 2D y de mayor dimensión, la indexación con arreglos de enteros funciona igual que en los arreglos 1D a lo largo de cada eje. Si usamos solo un arreglo de enteros para indexar, se realiza la indexación solo a lo largo de un eje (eje 0). Si usamos dos arreglos separados por una coma, se indexa a lo largo de ambos ejes (eje 0 y eje 1).
La indexación solo a lo largo del eje 0 usando un arreglo de enteros devuelve un arreglo 2D. Al acceder a los elementos mediante este tipo de indexación, se agrupan en un nuevo arreglo. Este nuevo arreglo consiste en arreglos 1D, y al agruparlos se incrementa la dimensionalidad en uno, resultando en un arreglo 2D.
La indexación a lo largo del eje 0 y eje 1 usando dos arreglos de enteros devuelve un arreglo 1D.
Todos los arreglos de enteros utilizados para cada uno de los ejes deben tener la misma forma.
123456789101112131415import numpy as np array_2d = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) # Retrieving first and the third row print(array_2d[[0, 2]]) # Retrieving the main diagonal elements print(array_2d[[0, 1, 2], [0, 1, 2]]) # Retrieving the first and third element of the second row print(array_2d[1, [0, 2]]) # IndexError is thrown, since index 3 along axis 0 is out of bounds print(array_2d[[0, 3], [0, 1]])
Como puedes ver, también podemos combinar la indexación básica de enteros y la indexación por arreglo de enteros.
Una vez más, si al menos uno de los índices está fuera de rango, se lanza un IndexError.
En cuanto a las aplicaciones, este tipo de indexación es útil cuando necesitas seleccionar elementos específicos que no están uno junto al otro o que no siguen un orden regular. A diferencia del slicing, que trabaja con rangos continuos, este método permite elegir exactamente qué elementos recuperar. Es útil cuando se desea extraer datos dispersos o reorganizar valores en un arreglo.
1. Estás analizando los datos de ventas mensuales (en miles) de cinco productos. ¿Cuál es la salida del código?
2. El arreglo temperatures representa las temperaturas semanales (en °C) de tres ciudades durante lunes, martes y miércoles. Selecciona la opción correcta para obtener las temperaturas de Berlín en lunes y martes, y de Madrid en martes.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla