Copia di Array
Spesso è necessario creare una copia di un array per apportare modifiche senza influenzare l'array originale.
Assegnazione semplice
Per prima cosa, vediamo perché non è sufficiente creare un'altra variabile utilizzando array_2 = array_1, dove array_1 è il nostro array originale.
123456import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
Abbiamo modificato il valore del primo elemento di array_2 in 10, ma questa assegnazione ha anche cambiato il valore del primo elemento di array_1 in 10.
Con array_2 = array_1, non si crea un nuovo array; si crea invece un riferimento allo stesso array in memoria. Di conseguenza, qualsiasi modifica apportata a array_2 influenzerà anche array_1.
Per risolvere questo problema, potremmo scrivere array_2 = np.array([1, 2, 3]), ma ciò significherebbe scrivere lo stesso codice due volte. Ricorda il principio fondamentale nella programmazione: Non ripeterti.
Metodo ndarray.copy()
Fortunatamente, NumPy offre un metodo ndarray.copy() come soluzione a questo problema.
12345678import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
Ora è stato creato un nuovo array per array_2 con gli stessi elementi di array_1.
Per gli array 2D, la procedura di copia è esattamente la stessa.
Funzione numpy.copy()
Invece del metodo .copy(), è possibile utilizzare anche la funzione copy(), che prende l'array come parametro: array_2 = np.copy(array_1).
Sia la funzione che il metodo funzionano allo stesso modo; tuttavia, esiste una differenza. Entrambi hanno il parametro order, che specifica la disposizione in memoria dell'array, ma i loro valori predefiniti sono diversi.
L'immagine sottostante mostra la struttura dell'array sales_data_2021 utilizzato nell'esercizio:
Swipe to start coding
Stai analizzando i dati di vendita trimestrali di un'azienda per l'anno 2021. I dati sono memorizzati in un array NumPy chiamato sales_data_2021, dove ogni riga rappresenta uno specifico prodotto e ogni colonna rappresenta le vendite trimestrali di quel prodotto.
- Crea una copia di
sales_data_2021utilizzando il metodo appropriato di un array NumPy e salvala insales_data_2022. - Aggiorna gli ultimi due elementi della prima riga (che rappresentano le vendite trimestrali di un prodotto) in
sales_data_2022a390e370:- Usa un indice positivo per specificare la riga;
- Usa uno slice con solo un valore di
startnegativo per indicizzare gli ultimi due elementi.
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
Fantastico!
Completion tasso migliorato a 3.85
Copia di Array
Scorri per mostrare il menu
Spesso è necessario creare una copia di un array per apportare modifiche senza influenzare l'array originale.
Assegnazione semplice
Per prima cosa, vediamo perché non è sufficiente creare un'altra variabile utilizzando array_2 = array_1, dove array_1 è il nostro array originale.
123456import numpy as np array_1 = np.array([1, 2, 3]) array_2 = array_1 # Setting the first element of array_2 to 10 array_2[0] = 10 print(array_1)
Abbiamo modificato il valore del primo elemento di array_2 in 10, ma questa assegnazione ha anche cambiato il valore del primo elemento di array_1 in 10.
Con array_2 = array_1, non si crea un nuovo array; si crea invece un riferimento allo stesso array in memoria. Di conseguenza, qualsiasi modifica apportata a array_2 influenzerà anche array_1.
Per risolvere questo problema, potremmo scrivere array_2 = np.array([1, 2, 3]), ma ciò significherebbe scrivere lo stesso codice due volte. Ricorda il principio fondamentale nella programmazione: Non ripeterti.
Metodo ndarray.copy()
Fortunatamente, NumPy offre un metodo ndarray.copy() come soluzione a questo problema.
12345678import numpy as np array_1 = np.array([1, 2, 3]) # Copying the contents of array_1 array_2 = array_1.copy() # Setting the first element of array_2 to 10 array_2[0] = 10 print(f'Initial array: {array_1}') print(f'Modified copy: {array_2}')
Ora è stato creato un nuovo array per array_2 con gli stessi elementi di array_1.
Per gli array 2D, la procedura di copia è esattamente la stessa.
Funzione numpy.copy()
Invece del metodo .copy(), è possibile utilizzare anche la funzione copy(), che prende l'array come parametro: array_2 = np.copy(array_1).
Sia la funzione che il metodo funzionano allo stesso modo; tuttavia, esiste una differenza. Entrambi hanno il parametro order, che specifica la disposizione in memoria dell'array, ma i loro valori predefiniti sono diversi.
L'immagine sottostante mostra la struttura dell'array sales_data_2021 utilizzato nell'esercizio:
Swipe to start coding
Stai analizzando i dati di vendita trimestrali di un'azienda per l'anno 2021. I dati sono memorizzati in un array NumPy chiamato sales_data_2021, dove ogni riga rappresenta uno specifico prodotto e ogni colonna rappresenta le vendite trimestrali di quel prodotto.
- Crea una copia di
sales_data_2021utilizzando il metodo appropriato di un array NumPy e salvala insales_data_2022. - Aggiorna gli ultimi due elementi della prima riga (che rappresentano le vendite trimestrali di un prodotto) in
sales_data_2022a390e370:- Usa un indice positivo per specificare la riga;
- Usa uno slice con solo un valore di
startnegativo per indicizzare gli ultimi due elementi.
Soluzione
Grazie per i tuoi commenti!
single