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_2influenzerà 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_2021utilizzando 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_2022a 390 e 370:- Usa un indice positivo per specificare la riga;
- Usa uno slice con solo un valore
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
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_2influenzerà 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_2021utilizzando 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_2022a 390 e 370:- Usa un indice positivo per specificare la riga;
- Usa uno slice con solo un valore
startnegativo per indicizzare gli ultimi due elementi.
Soluzione
Grazie per i tuoi commenti!
single