Aplanamiento de Arreglos
Aplanar un arreglo significa convertirlo de un arreglo multidimensional a un arreglo 1D, desenrollando esencialmente su contenido.
Esta operación es útil cuando se necesita procesar los elementos de un arreglo uno por uno o cuando se desea hacer que los datos sean más adecuados para ciertos algoritmos.
Existen tres opciones posibles para aplanar en NumPy:
- Usar el método
ndarray.reshape(-1)o la funciónnumpy.reshape(array, -1); - Usar el método
ndarray.ravel()o la funciónnumpy.ravel(array); - Usar el método
ndarray.flatten().
reshape(-1)
El método .reshape(-1) o la función reshape(array, -1) devolverá un arreglo aplanado contiguo con la misma cantidad de elementos.
Como ya se mencionó en el capítulo anterior, -1 calcula automáticamente el tamaño de la dimensión en función del tamaño del arreglo original. Dado que solo se pasa un único entero para shape, se devuelve un arreglo 1D con la misma cantidad de elementos.
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.reshape(-1) print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
El método .reshape() o la función respectiva devuelve una vista del arreglo original, por lo que cualquier cambio realizado en el arreglo reestructurado también afectará al arreglo original.
Se puede utilizar flattened_array = np.reshape(array_2d, -1) en lugar de llamar al método.
ravel()
El método ndarray.ravel() o la función numpy.ravel(array) funciona igual que reshape(-1) y también devuelve una vista del arreglo original:
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.ravel() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
flattened_array = np.ravel(array_2d) se puede utilizar en lugar de llamar al método.
ndarray.flatten()
En caso de que se requiera una copia del arreglo original, y no una vista, se puede utilizar el método .flatten():
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.flatten() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Initial array:\n{array_2d}')
Siempre es posible copiar una vista de un arreglo para crear un objeto independiente y modificar esta copia sin afectar el arreglo original.
Swipe to start coding
- Uso correcto del método
.flatten()para aplanarexam_scoresy almacenar el resultado enexam_scores_flattened. - Uso correcto del método
.reshape()para aplanarexam_scoresy almacenar el resultado enexam_scores_reshaped. - Uso del método
.ravel()para aplanarexam_scoresy almacenar el resultado enexam_scores_raveled. - De los tres arreglos aplanados creados, selecciona el que sea una copia del arreglo original, no una vista, y asigna
100a su primer elemento (utiliza indexación positiva).
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
What is the difference between a view and a copy in NumPy?
When should I use flatten() instead of reshape(-1) or ravel()?
Can you explain what happens if I modify the flattened array in each case?
Awesome!
Completion rate improved to 3.7
Aplanamiento de Arreglos
Desliza para mostrar el menú
Aplanar un arreglo significa convertirlo de un arreglo multidimensional a un arreglo 1D, desenrollando esencialmente su contenido.
Esta operación es útil cuando se necesita procesar los elementos de un arreglo uno por uno o cuando se desea hacer que los datos sean más adecuados para ciertos algoritmos.
Existen tres opciones posibles para aplanar en NumPy:
- Usar el método
ndarray.reshape(-1)o la funciónnumpy.reshape(array, -1); - Usar el método
ndarray.ravel()o la funciónnumpy.ravel(array); - Usar el método
ndarray.flatten().
reshape(-1)
El método .reshape(-1) o la función reshape(array, -1) devolverá un arreglo aplanado contiguo con la misma cantidad de elementos.
Como ya se mencionó en el capítulo anterior, -1 calcula automáticamente el tamaño de la dimensión en función del tamaño del arreglo original. Dado que solo se pasa un único entero para shape, se devuelve un arreglo 1D con la misma cantidad de elementos.
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.reshape(-1) print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
El método .reshape() o la función respectiva devuelve una vista del arreglo original, por lo que cualquier cambio realizado en el arreglo reestructurado también afectará al arreglo original.
Se puede utilizar flattened_array = np.reshape(array_2d, -1) en lugar de llamar al método.
ravel()
El método ndarray.ravel() o la función numpy.ravel(array) funciona igual que reshape(-1) y también devuelve una vista del arreglo original:
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.ravel() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Modified initial array:\n{array_2d}')
flattened_array = np.ravel(array_2d) se puede utilizar en lugar de llamar al método.
ndarray.flatten()
En caso de que se requiera una copia del arreglo original, y no una vista, se puede utilizar el método .flatten():
1234567import numpy as np array_2d = np.array([[1, 2, 3], [4, 5, 6]]) flattened_array = array_2d.flatten() print(f'Flatenned array: {flattened_array}') # Changing the first element of flattened_array flattened_array[0] = 10 print(f'Initial array:\n{array_2d}')
Siempre es posible copiar una vista de un arreglo para crear un objeto independiente y modificar esta copia sin afectar el arreglo original.
Swipe to start coding
- Uso correcto del método
.flatten()para aplanarexam_scoresy almacenar el resultado enexam_scores_flattened. - Uso correcto del método
.reshape()para aplanarexam_scoresy almacenar el resultado enexam_scores_reshaped. - Uso del método
.ravel()para aplanarexam_scoresy almacenar el resultado enexam_scores_raveled. - De los tres arreglos aplanados creados, selecciona el que sea una copia del arreglo original, no una vista, y asigna
100a su primer elemento (utiliza indexación positiva).
Solución
¡Gracias por tus comentarios!
single