NumPy-taulukon kopio vs. näkymä

Kopion ja näkymän välinen ero

Kopion ja taulukkoviiten välisen pääasiallisen eron on se, että kopio on uusi taulukko, kun taas tämä näkymä on vain alkuperäisen taulukon näkymä.

Kopio sisältää tietoja, ja kaikki muutokset, jotka tehdään kopiossa, eivät vaikuta alkuperäiseen taulukkoon, ja kaikki muutokset, jotka tehdään alkuperäiseen taulukkoon, eivät vaikuta kopioon.

Näkymä ei omista tietoja, kaikki näkymään tehtävät muutokset vaikuttavat alkuperäiseen taulukkoon, ja kaikki alkuperäiseen taulukkoon tehtävät muutokset vaikuttavat näkymään.

Kopio:

Esimerkki

Tee kopio, muuta alkuperäistä taulukkoa ja näytä kaksi taulukkoa:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
arr[0] = 61
print(arr) 
print(x)

Suorita esimerkki

Tämä kopio ei tulisi kärsimään alkuperäiseen taulukkoon tehtävistä muutoksista.

Näkymä:

Esimerkki

Luo näkymä, muuta alkuperäistä taulukkoa ja näytä kaksi taulukkoa:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
arr[0] = 61
print(arr) 
print(x)

Suorita esimerkki

Näkymä tulisi kärsimään alkuperäiseen taulukkoon tehtävistä muutoksista.

Muuta näkymässä:

Esimerkki

Luo näkymä, muuta näkymää ja näytä kaksi taulukkoa:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.view()
x[0] = 31
print(arr) 
print(x)

Suorita esimerkki

Alkuperäinen taulukko tulisi kärsimään näkymään tehtävistä muutoksista.

Tarkista, omistaako taulukko tiedot

Kuten edellä mainittiin, kopio omistaa tiedot, mutta näkymä ei omista tietoja, mutta miten voimme tarkistaa sen?

Jokaisella NumPy-taulukolla on ominaisuus baseJos taulukossa on tietoja, tämä base-ominaisuus palauttaa Ei mitään.

Muuten,base Ominaisuus viittaa alkuperäiseen objektiin.

Esimerkki

Tulosta base-ominaisuuden arvo tarkistaaksesi, onko taulukossa oma tieto:

import numpy as np
arr = np.array([1, 2, 3, 4, 5])
x = arr.copy()
y = arr.view()
print(x.base)
print(y.base)

Suorita esimerkki

Kopio takaisin Ei mitään.

Näytä alkuperäinen taulukko.