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

Scorri per mostrare il menu

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

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3

Chieda ad AI

expand
ChatGPT

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

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

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 3
Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Siamo spiacenti che qualcosa sia andato storto. Cosa è successo?
some-alt