Reshaping y joining and splitting en Python

| Última modificación: 12 de abril de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿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)
Reshaping y joining and splitting

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!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado