Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Taulukoiden Kopiointi | Yleisesti Käytetyt NumPy-Funktiot
Ultimate NumPy

bookTaulukoiden Kopiointi

Usein on tarpeen luoda kopio taulukosta, jotta voit tehdä muutoksia vaikuttamatta alkuperäiseen taulukkoon.

Yksinkertainen sijoitus

Ensin käsitellään, miksi emme voi yksinkertaisesti luoda toista muuttujaa käyttämällä array_2 = array_1, jossa array_1 on alkuperäinen taulukkomme.

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

Muutimme array_2:n ensimmäisen alkion arvoksi 10, mutta tämä muutos muutti myös array_1:n ensimmäisen alkion arvoksi 10.

Note
Huomio

Kun käytät array_2 = array_1, et luo uutta taulukkoa; sen sijaan luot viittauksen samaan taulukkoon muistissa. Tämän seurauksena kaikki muutokset, jotka tehdään array_2:lle, vaikuttavat myös array_1:een.

Tämän ongelman ratkaisemiseksi voisimme kirjoittaa array_2 = np.array([1, 2, 3]), mutta se tarkoittaisi saman koodin kirjoittamista kahdesti. Muista tärkeä periaate ohjelmoinnissa: Älä toista itseäsi.

ndarray.copy()-metodi

Onneksi NumPy tarjoaa ndarray.copy()-metodin ratkaisuksi tähän ongelmaan.

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

Nyt olemme luoneet uuden taulukon array_2, jossa on samat alkiot kuin array_1:ssä.

2D-taulukoiden kohdalla kopiointimenettely on täsmälleen sama.

numpy.copy()-funktio

.copy()-metodin sijaan voidaan käyttää myös copy()-funktiota, joka ottaa taulukon parametrinaan: array_2 = np.copy(array_1).

Sekä funktio että metodi toimivat samalla tavalla; kuitenkin niissä on yksi vivahde-ero. Molemmilla on order-parametri, joka määrittää taulukon muistirakenteen, mutta niiden oletusarvot eroavat toisistaan.

Alla oleva kuva esittää tehtävässä käytetyn sales_data_2021-taulukon rakenteen:

Tehtävä

Swipe to start coding

Analysoit yrityksen neljännesvuosittaista myyntidataa vuodelta 2021. Data on tallennettu NumPy-taulukkoon nimeltä sales_data_2021, jossa jokainen rivi edustaa tiettyä tuotetta ja jokainen sarake kyseisen tuotteen neljännesvuosittaista myyntiä.

  1. Luo kopio taulukosta sales_data_2021 käyttämällä NumPy-taulukon asianmukaista menetelmää ja tallenna se muuttujaan sales_data_2022.
  2. Päivitä ensimmäisen rivin (tuotteen neljännesvuosimyynti) kaksi viimeistä alkiota taulukossa sales_data_2022 arvoihin 390 ja 370:
    • Käytä positiivista indeksiä rivin määrittämiseen;
    • Käytä viipaletta, jossa on vain negatiivinen start-arvo, kahden viimeisen alkion indeksointiin.

Ratkaisu

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

close

Awesome!

Completion rate improved to 3.7

bookTaulukoiden Kopiointi

Pyyhkäise näyttääksesi valikon

Usein on tarpeen luoda kopio taulukosta, jotta voit tehdä muutoksia vaikuttamatta alkuperäiseen taulukkoon.

Yksinkertainen sijoitus

Ensin käsitellään, miksi emme voi yksinkertaisesti luoda toista muuttujaa käyttämällä array_2 = array_1, jossa array_1 on alkuperäinen taulukkomme.

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

Muutimme array_2:n ensimmäisen alkion arvoksi 10, mutta tämä muutos muutti myös array_1:n ensimmäisen alkion arvoksi 10.

Note
Huomio

Kun käytät array_2 = array_1, et luo uutta taulukkoa; sen sijaan luot viittauksen samaan taulukkoon muistissa. Tämän seurauksena kaikki muutokset, jotka tehdään array_2:lle, vaikuttavat myös array_1:een.

Tämän ongelman ratkaisemiseksi voisimme kirjoittaa array_2 = np.array([1, 2, 3]), mutta se tarkoittaisi saman koodin kirjoittamista kahdesti. Muista tärkeä periaate ohjelmoinnissa: Älä toista itseäsi.

ndarray.copy()-metodi

Onneksi NumPy tarjoaa ndarray.copy()-metodin ratkaisuksi tähän ongelmaan.

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

Nyt olemme luoneet uuden taulukon array_2, jossa on samat alkiot kuin array_1:ssä.

2D-taulukoiden kohdalla kopiointimenettely on täsmälleen sama.

numpy.copy()-funktio

.copy()-metodin sijaan voidaan käyttää myös copy()-funktiota, joka ottaa taulukon parametrinaan: array_2 = np.copy(array_1).

Sekä funktio että metodi toimivat samalla tavalla; kuitenkin niissä on yksi vivahde-ero. Molemmilla on order-parametri, joka määrittää taulukon muistirakenteen, mutta niiden oletusarvot eroavat toisistaan.

Alla oleva kuva esittää tehtävässä käytetyn sales_data_2021-taulukon rakenteen:

Tehtävä

Swipe to start coding

Analysoit yrityksen neljännesvuosittaista myyntidataa vuodelta 2021. Data on tallennettu NumPy-taulukkoon nimeltä sales_data_2021, jossa jokainen rivi edustaa tiettyä tuotetta ja jokainen sarake kyseisen tuotteen neljännesvuosittaista myyntiä.

  1. Luo kopio taulukosta sales_data_2021 käyttämällä NumPy-taulukon asianmukaista menetelmää ja tallenna se muuttujaan sales_data_2022.
  2. Päivitä ensimmäisen rivin (tuotteen neljännesvuosimyynti) kaksi viimeistä alkiota taulukossa sales_data_2022 arvoihin 390 ja 370:
    • Käytä positiivista indeksiä rivin määrittämiseen;
    • Käytä viipaletta, jossa on vain negatiivinen start-arvo, kahden viimeisen alkion indeksointiin.

Ratkaisu

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 3
single

single

some-alt