¿Sabes qué son el reshaping y joining and splitting? Estas funciones en Python te pueden resultar bastante útiles cuando estás trabajando con arrays, por eso, en este artículo, queremos mostrarte cómo usarlas.
Reshaping y joining and splitting
Reshaping
Una de las herramientas más usadas en Python es el reshaping. Por ejemplo, si queremos transformar:
x = [1, 2, 3, 4, 5, 6, 7, 8, 9]
A una matriz:
1 2 3
x= 4 5 6
7 8 9
#Reshaping y joining and splitting
grid = np.arange (1, 10)
print (grid)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Aquí hemos generado un array de una dimensión, del 1 al 9.
Ahora, lo que podemos hacer, por ejemplo, es cambiarle las dimensiones a este array para que ya no sea una, sino tres (3, 3):
#Reshaping y joining and splitting
grid.reshape (3, 3)
array ([1 2 3],
[4 5 6],
[7 8 9]])
Podemos cambiarle la dimensión a este array a tres, porque el número de componentes, en este caso 9, es múltiplo de 3. Si intentamos cambiar (3, 3) a (3, 5), nos daría error, porque no hay suficientes elementos que llenar:
#Reshaping y joining and splitting
grid.reshape (3, 5)
En este caso le estaríamos pidiendo al algoritmo que nos transforme un array de 9 elementos (3 x 3 = 9) en un array de 15 componentes (3 x 5 = 15), lo cual no es posible, por eso lo dejaremos en (3, 3).
Joining and splitting
Joining and splitting es una forma de concatenar y dividir los arrays. Para entender cómo funcionan, dibujemos una matriz:
#Reshaping y joining and splitting
grid = grid.reshape (3, 3)
grid
array ([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
A este array vamos a intentar concatenarle un vector en la parte de abajo. Entonces, probemos primero a concatenar al vector que ya tenemos, el mismo vector:
#Reshaping y joining and splitting
np.concatenate ([grid, grid])
array ([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
En este caso, lo único que hemos hecho es coger el array que teníamos y ponerle el mismo array en la parte de abajo.
Lo que sucede es que esto por defecto está tomando el axis = 0, pero podríamos ponerle un axis = 1 y, de este modo, nos haría la concatenación a la derecha, en vez de hacerla abajo:
#Reshaping y joining and splitting
np.concatenate ([grid, grid], axis = 1)
array ([[1, 2, 3, 1, 2, 3],
[4, 5, 6, 4, 5, 6],
[7, 8, 9, 7, 8, 9]])
Para arrays con distintas dimensiones, se suele usar vstack (vertical stack) o hstack (horizontal stack). Esto es exactamente igual al concatenate. Veamos cómo funciona.
Vamos a crear un array, cuyo número de componentes no importa. En este caso son 3: [20 20 20]. Lo que podríamos hacer es añadir este array al array denominado “grid” en la parte de abajo:
#Reshaping y joining and splitting
x = np.array ([20, 20, 20])
np.vstack ([grid, x])
array ([[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
[20, 20, 20]])
En este caso, estaríamos haciendo lo mismo que con axis = 0 o axis = 1, pero utilizaríamos el vstack en vez del axis para hacerlo de forma vertical.
Lo mismo sería si quisiéramos ponerlo horizontal, solo que tendríamos que hacer reshape:
#Reshaping y joining and splitting
print (x.ndim)
x_reshape = x.reshape (3, 1)
print (x.reshape)
1
[[20]
[20]
[20]]
#Reshaping y joining and splitting
x_reshape.shape
(3, 1)
#Reshaping y joining and splitting
np.hstack ([grid, x_reshape])
array ([[1, 2, 3, 20],
[4, 5, 6, 20],
[7, 8, 9, 20]])
Podemos dividir los arrays usando split, hsplit o vsplit:
#Reshaping y joining and splitting
x = np.arange (1, 10)
x
array ([1, 2, 3, 4, 5, 6, 7, 8, 9])
#Reshaping y joining and splitting
x1, x2, x3 = np.split (x, [3, 5])
print (x1)
print (x2)
print (x3)
[1 2 3]
[4 5]
[6 7 8 9]
¿Quieres seguir aprendiendo?
Ahora que hemos visto cómo funcionan el reshaping y joining and splitting, podemos seguir aprendiendo sobre Big Data, una de las disciplinas más demandadas. Puedes cumplir tus objetivos con el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, la formación intensiva de alta calidad en la que podrás conseguir todos los conocimientos teóricos y prácticos que necesitas para entrar en el mercado laboral. ¡Anímate a seguir cambiando tu futuro y entra para pedir más información ahora!