El indexing y slicing son funciones que podemos utilizar en Python y que nos ayudarán a entender un poco mejor los arrays y que nos permitirán realizar muchas más operaciones con estos.
En este artículo, veamos en qué consisten el indexing y slicing y cómo funcionan.
Indexing y slicing
Indexing
El indexing en arrays funciona exactamente igual que los índex de las listas en Python. Así pues, si tenemos un array de esta forma:
#Indexing y slicing
x1 = np.array ([5, 4, 1, 2, 3])
x1
array ([5, 4, 1, 2, 3])
Obtendríamos esto.
Cabe recordar que los elementos empiezan en índex = 0, no en índedx = 1.
Podemos extraer el primer elemento de nuestro array con un simple comando:
x1 [0]
5
Podemos acceder al último elemento de nuestro array y extraerlo usando -1:
#Indexing y slicing
x1 [-1]
3
O incluso acceder a elementos desde el final del array usando:
#Indexing y slicing
x1 [1 : 3]
array ([4, 1])
Aquí lo que hemos hecho ha sido acceder del elemento 1 al elemento 3, en este caso serían 4 y 1. Veamos:
- Elemento 0: 5
- Elemento 1: 4
- Elemento 2: 1
- Elemento 3: 2
- Elemento 4: 3
No se ha incluido el 2 en esta lista porque el índice es igual al índice menos 1 (index = index – 1).
En caso de arrays con más dimensiones, funciona exactamente igual. Lo único diferente es que debemos tener en cuenta que estamos trabajando con más dimensiones a la hora de imprimir los arrays:
#Indexing y slicing
x2 = np.array ([[1, 2, 3], [4, 5, 6]])
x2 (0, 0)
1
En este caso nos imprime el componente (0, 0), que sería el 1 del array en la primera dimensión.
Si ponemos x2 y solo introducimos un componente, nos sale en pantalla toda la primera fila o dimensión del array:
#Indexing y slicing
x2 [0]
array ([1, 2, 3])
También podemos hacerlo, por ejemplo, con el último valor de la dimensión 1 y el último elemento de la dimensión 2:
#Indexing y slicing
x2 = [-1, -1]
6
Slicing
Podemos extraer subconjuntos pertenecientes a un array usando:
x [start : stop : step]
Si no definimos alguno de ellos, los valores por defecto son: start = 0, stop = size of dimension, step = 1.
Ya hemos visto que podíamos generar una secuencia de números usando numpy.arrange junto al número de elementos que queremos que genere:
#Indexing y slicing
x = np.arange (10)
x
array ([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
Aquí podríamos extraer, exactamente del mismo modo, hasta el elemento 5:
#Indexing y slicing
x [: 5]
array ([0, 1, 2, 3, 4])
Incluso podríamos extraer cada dos elementos de nuestro array:
#Indexing y slicing
x [: : 2]
array ([2, 4, 6, 8])
También podríamos invertir nuestro array de una manera muy simple:
#Indexing y slicing
x [: : -1]
array ([9, 8, 7, 6, 5, 4, 3, 2, 1, 0])
Aquí lo que estamos haciendo es coger todos los elementos, pero empezando desde el último elemento del array.
Para arrays con más de una dimensión es exactamente igual:
#Indexing y slicing
z = np.array ([[1, 2, 3], [4, 5, 6]])
z [: , 0]
array ([1, 4])
En este caso, lo que hemos hecho ha sido mostrar el primer componente de la primera dimensión y el primer componente de la segunda dimensión.
Podríamos hacerlo al contrario, donde tendríamos algo así:
#Indexing y slicing
z [0, ::2]
array ([1, 3])
Esto lo que hace es coger la primera dimensión, es decir, el [1, 2, 3], y devolvería cada dos valores, que, en este caso, serían el 1 y el 3.
Incluso podríamos coger la segunda dimensión, es decir, el [4, 5, 6], y darle la vuelta:
#Indexing y slicing
z [1, : : -1]
array ([6, 5, 4])
Podemos también modificar los elementos de los arrays, que funciona igual en las listas:
#Indexing y slicing
z [0, 0] = 100
z
array ([[100, 2, 3],
[4, 5, 6]])
En este ejemplo, cambiamos el primer elemento de la primera dimensión.
Ya sabes cómo funcionan el indexing y slicing en Python, por lo que ha llegado el momento de seguir aprendiendo sobre Big Data, una de las disciplinas más demandadas y mejor pagadas. Para ello tenemos el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva en la que podrás aprender a nivel teórico y práctico para incursionar en el mercado laboral en pocos meses. ¡Atrévete a impulsar tu futuro y pide más información ahora!