Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Copia di Array | Funzioni NumPy Comunemente Utilizzate
Ultimate NumPy

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

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

Note
Nota

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.

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 è 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:

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 uno specifico prodotto e ogni colonna rappresenta le vendite trimestrali di quel prodotto.

  1. Crea una copia di sales_data_2021 utilizzando il metodo appropriato di un array NumPy e salvala in sales_data_2022.
  2. Aggiorna gli ultimi due elementi della prima riga (che rappresentano 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 di 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

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 3.7

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

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

Note
Nota

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.

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 è 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:

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 uno specifico prodotto e ogni colonna rappresenta le vendite trimestrali di quel prodotto.

  1. Crea una copia di sales_data_2021 utilizzando il metodo appropriato di un array NumPy e salvala in sales_data_2022.
  2. Aggiorna gli ultimi due elementi della prima riga (che rappresentano 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 di 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
single

single

some-alt