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
Can you explain the difference between the .copy() method and np.copy() function in more detail?
What does the 'order' parameter do when copying arrays?
Can you show how to copy a 2D array using these methods?
Awesome!
Completion rate improved to 3.7
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