Appiattimento degli Array
Appiattire un array significa convertirlo da un array multidimensionale a un array 1D, srotolando essenzialmente i suoi contenuti.
Questa operazione è utile quando è necessario elaborare gli elementi di un array uno per uno o quando si desidera rendere i dati più adatti a determinati algoritmi.
Esistono tre possibili opzioni per appiattire un array in NumPy:
- Utilizzo del metodo
ndarray.reshape(-1)o della funzionenumpy.reshape(array, -1); - Utilizzo del metodo
ndarray.ravel()o della funzionenumpy.ravel(array); - Utilizzo del metodo
ndarray.flatten().
reshape(-1)
Il metodo .reshape(-1) o la funzione reshape(array, -1) restituisce un array appiattito contiguo con lo stesso numero di elementi.
Come già menzionato nel capitolo precedente, -1 calcola automaticamente la dimensione in base alla dimensione dell'array originale. Poiché viene passato solo un singolo intero per shape, viene restituito un array 1D con lo stesso numero di elementi.
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}')
Il metodo .reshape() o la rispettiva funzione restituisce una vista dell'array originale, quindi qualsiasi modifica apportata all'array rimodellato influenzerà anche l'array originale.
L'utilizzo di flattened_array = np.reshape(array_2d, -1) può essere impiegato al posto della chiamata al metodo.
ravel()
Il metodo ndarray.ravel() o la funzione numpy.ravel(array) funzionano allo stesso modo di reshape(-1) e restituiscono anch'essi una vista dell'array originale:
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) può essere utilizzato al posto della chiamata al metodo.
ndarray.flatten()
Nel caso in cui sia necessaria una copia dell'array originale, e non una vista, è possibile utilizzare il metodo .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}')
È sempre possibile copiare una vista di un array per creare un oggetto separato e modificare questa copia senza influenzare l'array originale.
Swipe to start coding
- Utilizzare correttamente il metodo
.flatten()per appiattireexam_scorese memorizzare il risultato inexam_scores_flattened. - Utilizzare correttamente il metodo
.reshape()per appiattireexam_scorese memorizzare il risultato inexam_scores_reshaped. - Utilizzare il metodo
.ravel()per appiattireexam_scorese memorizzare il risultato inexam_scores_raveled. - Tra i tre array appiattiti creati, scegliere quello che è una copia dell'array originale, non una vista, e assegnare
100al suo primo elemento (utilizzare l'indicizzazione positiva).
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Appiattimento degli Array
Scorri per mostrare il menu
Appiattire un array significa convertirlo da un array multidimensionale a un array 1D, srotolando essenzialmente i suoi contenuti.
Questa operazione è utile quando è necessario elaborare gli elementi di un array uno per uno o quando si desidera rendere i dati più adatti a determinati algoritmi.
Esistono tre possibili opzioni per appiattire un array in NumPy:
- Utilizzo del metodo
ndarray.reshape(-1)o della funzionenumpy.reshape(array, -1); - Utilizzo del metodo
ndarray.ravel()o della funzionenumpy.ravel(array); - Utilizzo del metodo
ndarray.flatten().
reshape(-1)
Il metodo .reshape(-1) o la funzione reshape(array, -1) restituisce un array appiattito contiguo con lo stesso numero di elementi.
Come già menzionato nel capitolo precedente, -1 calcola automaticamente la dimensione in base alla dimensione dell'array originale. Poiché viene passato solo un singolo intero per shape, viene restituito un array 1D con lo stesso numero di elementi.
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}')
Il metodo .reshape() o la rispettiva funzione restituisce una vista dell'array originale, quindi qualsiasi modifica apportata all'array rimodellato influenzerà anche l'array originale.
L'utilizzo di flattened_array = np.reshape(array_2d, -1) può essere impiegato al posto della chiamata al metodo.
ravel()
Il metodo ndarray.ravel() o la funzione numpy.ravel(array) funzionano allo stesso modo di reshape(-1) e restituiscono anch'essi una vista dell'array originale:
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) può essere utilizzato al posto della chiamata al metodo.
ndarray.flatten()
Nel caso in cui sia necessaria una copia dell'array originale, e non una vista, è possibile utilizzare il metodo .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}')
È sempre possibile copiare una vista di un array per creare un oggetto separato e modificare questa copia senza influenzare l'array originale.
Swipe to start coding
- Utilizzare correttamente il metodo
.flatten()per appiattireexam_scorese memorizzare il risultato inexam_scores_flattened. - Utilizzare correttamente il metodo
.reshape()per appiattireexam_scorese memorizzare il risultato inexam_scores_reshaped. - Utilizzare il metodo
.ravel()per appiattireexam_scorese memorizzare il risultato inexam_scores_raveled. - Tra i tre array appiattiti creati, scegliere quello che è una copia dell'array originale, non una vista, e assegnare
100al suo primo elemento (utilizzare l'indicizzazione positiva).
Soluzione
Grazie per i tuoi commenti!
single