Copia degli Array
Spesso, è necessario creare una copia di un array per apportare modifiche senza influenzare l'array originale.
Assegnazione Semplice
Per prima cosa, discuteremo perché non possiamo semplicemente creare un'altra variabile usando 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 cambiato il valore del primo elemento di array_2
a 10
, ma questa assegnazione ha anche cambiato il valore del primo elemento di array_1
a 10
.
Nota
Con
array_2 = array_1
, non stai creando un nuovo array; invece, stai creando un riferimento allo stesso array in memoria. Di conseguenza, qualsiasi modifica apportata aarray_2
influenzerà anchearray_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 chiave nella programmazione: Non ripeterti.
Metodo ndarray.copy()
Fortunatamente, NumPy ha 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, abbiamo creato un nuovo array per array_2
con gli stessi elementi di array_1
.
Per array 2D, la procedura di copia è esattamente la stessa.
Funzione numpy.copy()
Invece del metodo .copy()
, possiamo anche usare 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, c'è una sfumatura. Entrambi hanno il parametro order
, che specifica il layout di memoria dell'array, ma i loro valori predefiniti sono diversi.
L'immagine sotto mostra la struttura dell'array sales_data_2021
utilizzato nel compito:
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 un prodotto specifico e ogni colonna rappresenta le vendite trimestrali per quel prodotto.
-
Crea una copia di
sales_data_2021
utilizzando il metodo appropriato di un array NumPy e memorizzala insales_data_2022
. -
Aggiorna gli ultimi due elementi della prima riga (che rappresenta le vendite trimestrali di un prodotto) in
sales_data_2022
a 390 e 370:- Usa un indice positivo per specificare la riga;
- Usa uno slice con solo un valore
start
negativo 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
Riassuma questo capitolo
Explain code
Explain why doesn't solve task
Awesome!
Completion rate improved to 3.7
Copia degli 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, discuteremo perché non possiamo semplicemente creare un'altra variabile usando 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 cambiato il valore del primo elemento di array_2
a 10
, ma questa assegnazione ha anche cambiato il valore del primo elemento di array_1
a 10
.
Nota
Con
array_2 = array_1
, non stai creando un nuovo array; invece, stai creando un riferimento allo stesso array in memoria. Di conseguenza, qualsiasi modifica apportata aarray_2
influenzerà anchearray_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 chiave nella programmazione: Non ripeterti.
Metodo ndarray.copy()
Fortunatamente, NumPy ha 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, abbiamo creato un nuovo array per array_2
con gli stessi elementi di array_1
.
Per array 2D, la procedura di copia è esattamente la stessa.
Funzione numpy.copy()
Invece del metodo .copy()
, possiamo anche usare 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, c'è una sfumatura. Entrambi hanno il parametro order
, che specifica il layout di memoria dell'array, ma i loro valori predefiniti sono diversi.
L'immagine sotto mostra la struttura dell'array sales_data_2021
utilizzato nel compito:
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 un prodotto specifico e ogni colonna rappresenta le vendite trimestrali per quel prodotto.
-
Crea una copia di
sales_data_2021
utilizzando il metodo appropriato di un array NumPy e memorizzala insales_data_2022
. -
Aggiorna gli ultimi due elementi della prima riga (che rappresenta le vendite trimestrali di un prodotto) in
sales_data_2022
a 390 e 370:- Usa un indice positivo per specificare la riga;
- Usa uno slice con solo un valore
start
negativo per indicizzare gli ultimi due elementi.
Soluzione
Grazie per i tuoi commenti!
Awesome!
Completion rate improved to 3.7single