single
Appiattimento degli array
Scorri per mostrare il menu
Appiattire un array significa convertirlo da un array multidimensionale a un array 1D, essenzialmente srotolando il suo contenuto.
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 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) restituiscono 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 originale dell'array. 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.
Si può utilizzare flattened_array = np.reshape(array_2d, -1) invece di chiamare il metodo.
ravel()
Il metodo ndarray.ravel() o la funzione numpy.ravel(array) funziona allo stesso modo di reshape(-1) e restituisce anch'esso 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 invece di chiamare il 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.
Scorri per iniziare a programmare
- 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