Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Copia degli Array | Funzioni NumPy Comumente Usate
Numpy Definitivo

book
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.

123456
import 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)
copy

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 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 chiave nella programmazione: Non ripeterti.

Metodo ndarray.copy()

Fortunatamente, NumPy ha un metodo ndarray.copy() come soluzione a questo problema.

12345678
import 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}')
copy

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:

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.

  1. Crea una copia di sales_data_2021 utilizzando il metodo appropriato di un array NumPy e memorizzala in sales_data_2022.

  2. 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

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt