Opas taulukoihin Pythonissa

Opas taulukoihin Pythonissa

esittely

Kuvittele, että puhelimessasi on soittolista suosikkikappaleistasi. Tämä soittolista on luettelo, jossa jokainen kappale on sijoitettu tiettyyn järjestykseen. Voit soittaa ensimmäisen kappaleen, hypätä toiseen, hypätä viidenteen ja niin edelleen. Tämä soittolista muistuttaa paljon tietokoneohjelmointia.

Taulukot ovat yksi perustavanlaatuisimmista ja laajimmin käytetyistä tietorakenteista.

Pohjimmiltaan taulukko on jäsennelty tapa tallentaa useita kohteita (kuten numeroita, merkkejä tai jopa muita taulukoita) tietyssä järjestyksessä, ja voit nopeasti käyttää, muokata tai poistaa mitä tahansa kohdetta, jos tiedät sen sijainnin (indeksin).

Tässä oppaassa annamme sinulle kattavan yleiskatsauksen taulukon tietorakenteesta. Ensinnäkin tarkastelemme, mitä taulukot ovat ja mitkä ovat niiden tärkeimmät ominaisuudet. Siirrymme sitten Pythonin maailmaan ja tutkimme, kuinka taulukoita toteutetaan, manipuloidaan ja sovelletaan todellisissa skenaarioissa.

Array-tietorakenteen ymmärtäminen

Taulukot ovat vanhimpia ja perustavimpia tietorakenteita, joita käytetään tietojenkäsittelytieteessä ja ohjelmoinnissa. Niiden yksinkertaisuus yhdistettynä tehokkuuteen tietyissä toiminnoissa tekee niistä pääaiheen kaikille, jotka suvaitsevat tietojen hallinnan ja manipuloinnin aluetta.

Joukko on kokoelma kohteita, tyypillisesti samaa tyyppiä, tallennettu vierekkäiset muistipaikat.

Tämä vierekkäinen tallennus mahdollistaa taulukoiden jatkuvan pääsyn mihin tahansa elementtiin sen indeksin perusteella. Jokaista taulukon alkiota kutsutaan an elementti, ja elementin paikan taulukossa määrittää sen indeksi, joka yleensä alkaa nollasta.

Harkitse esimerkiksi joukkoa kokonaislukuja: [10, 20, 30, 40, 50]. Tässä elementti 20 on indeksi 1:

python-taulukon indeksointi

On olemassa useita etuja taulukoiden käyttämisestä tietojemme tallentamiseen. Esimerkiksi muistiasettelunsa vuoksi taulukot sallivat O (1) (vakio) aika monimutkaisuus käytettäessä elementtiä sen indeksin perusteella. Tämä on erityisen hyödyllistä, kun tarvitsemme satunnaista pääsyä elementteihin. Lisäksi taulukoita on tallennettu vierekkäiset muistipaikat, mikä voi parantaa välimuistin sijaintia ja parantaa yleistä suorituskykyä tietyissä toiminnoissa. Toinen taulukoiden käytön huomattava etu on, että koska taulukoilla on kiinteä koko, kun ne on ilmoitettu, on helpompi hallita muistia ja välttää odottamattomat ylivuodot tai muistin loppumisvirheet.

Huomautuksia: Taulukot ovat erityisen hyödyllisiä skenaarioissa, joissa Kokoelman koko tiedetään etukäteen ja pysyy vakiona, tai joissa satunnaiskäyttö on yleisempää kuin lisäykset ja poistot.

Toisaalta taulukoissa on oma sarjansa rajoitukset. Yksi perinteisten taulukoiden tärkeimmistä rajoituksista on niiden kiinteä koko. Kun taulukko on luotu, sen kokoa ei voi muuttaa. Tämä voi johtaa ongelmiin, kuten hukkaan muistiin (jos joukko on liian suuri) tai koon muuttamiseen (jos joukko on liian pieni). Lisäksi elementin lisääminen tai poistaminen taulukon keskeltä vaatii elementtien siirtämistä, mikä johtaa O (n) näiden toimintojen aika monimutkaisuus.

Kaiken tämän yhteenvetona havainnollistetaan taulukoiden pääominaisuudet käyttämällä kappalesoittolistaesimerkkiä tämän oppaan alusta. Taulukko on tietorakenne, joka:

  • On indeksoitu: Aivan kuten jokaisella soittolistan kappaleella on numero (1, 2, 3, …), jokaisella taulukon elementillä on indeksi. Mutta useimmissa ohjelmointikielissä indeksi alkaa nollasta. Joten ensimmäinen kohde on indeksillä 0, toinen indeksillä 0 ja niin edelleen.

  • On kiinteä koko: Kun luot soittolistan esimerkiksi 10 kappaleelle, et voi lisätä 11. kappaletta poistamatta ensin yhtä. Samoin taulukoilla on kiinteä koko. Kun olet luonut tietynkokoisen taulukon, et voi lisätä kohteita enempää kuin sen kapasiteetti.

  • On Homogeeninen: Kaikki soittolistallasi olevat kappaleet ovat musiikkikappaleita. Samoin kaikki taulukon elementit ovat samaa tyyppiä. Jos sinulla on joukko kokonaislukuja, et voi yhtäkkiä tallentaa siihen tekstimerkkijonoa.

  • On suora pääsy: Jos haluat kuunnella soittolistan seitsemännen kappaleen, voit siirtyä suoraan siihen. Vastaavasti taulukoiden avulla pääset välittömästi mihin tahansa elementtiin, jos tiedät sen indeksin.

  • Vierekkäinen muisti: Tämä on hieman teknisempää. Kun tietokoneen muistiin luodaan joukko, se varaa jatkuvan muistilohkon. Ajattele sitä kuin koulun vierekkäisiä kaappeja. Jokainen kaappi on vierekkäin, eikä välissä ole rakoja.

Python ja Arrays

Python, joka tunnetaan joustavuudestaan ​​ja helppokäyttöisyydestään, tarjoaa useita tapoja työskennellä taulukoiden kanssa. Vaikka Pythonilla ei ole natiivitaulukkotietorakennetta kuten joillakin muilla kielillä, se tarjoaa tehokkaita vaihtoehtoja, jotka voivat toimia samalla tavalla ja jopa tarjota laajennettuja ominaisuuksia.

Ensi silmäyksellä, Pythonin lista saattaa tuntua taulukon synonyymeiltä, ​​mutta siinä on hienovaraisia ​​eroja ja vivahteita, jotka on otettava huomioon:

Lista Ryhmä
Sisäänrakennettu Python-tietorakenne Ei alkuperäisiä Pythonissa – ne tulevat "array"-moduulista
Dynaaminen koko Kiinteä (ennalta määritetty) koko
Voi sisältää eri tietotyyppejä Pidä samantyyppisiä esineitä
Tarjoa joukko sisäänrakennettuja manipulointimenetelmiä On tuotava ulkoisia moduuleja
O(1) pääsytoimintojen aika monimutkaisuus O(1) pääsytoimintojen aika monimutkaisuus
Kuluttaa enemmän muistia Muistitehokkaampi

Tätä taulukkoa katsoessa tulee luonnollisesti kysyä: "Milloin mitä käyttää?". No, jos tarvitset kokoelman, joka voi kasvaa tai pienentyä dynaamisesti ja sisältää useita tietotyyppejä, Pythonin luettelo on oikea tapa edetä. Kuitenkin skenaarioissa, jotka edellyttävät muistitehokkaampaa kokoelmaa samantyyppisillä elementeillä, voit harkita Pythonin käyttöä array moduuli tai ulkoiset kirjastot, kuten NumPy.

- ryhmä Moduuli Pythonissa

Kun useimmat kehittäjät ajattelevat taulukoita Pythonissa, he ajattelevat usein oletuksena luetteloita. Python tarjoaa kuitenkin erikoistuneen taulukkorakenteen sisäänrakennetun avulla array moduuli. Tämä moduuli tarjoaa tilaa säästävän C-tyylisen perustietotyyppien tallennustilan Pythonissa.

Vaikka Python-luettelot ovat uskomattoman monipuolisia ja voivat tallentaa minkä tahansa tyyppisiä objekteja, ne voivat joskus olla ylivoimaisia, varsinkin kun tarvitset vain kokoelman perustietotyyppejä, kuten kokonaislukuja tai kellukkeita. The array moduuli tarjoaa tavan luoda taulukoita, jotka ovat muistitehokkaampia kuin luettelot tietyille tietotyypeille.

Array:n luominen

Voit käyttää array moduuli, sinun on ensin tuotava se:

from array import array

Kun olet tuonut, voit luoda taulukon käyttämällä array() rakentaja:

arr = array('i', [1, 2, 3, 4, 5])
print(arr)

Tässä, 'i' argumentti osoittaa, että taulukko tallentaa allekirjoitettuna kokonaislukuja. Saatavilla on useita muita tyyppikoodeja, kuten 'f' kellukkeille ja 'd' kaksinkertaisille.

Elementtien käyttö ja muokkaaminen

Voit käyttää ja muokata taulukon elementtejä aivan kuten luettelon kanssa:

print(arr[2]) 

Ja nyt muokataan elementtiä muuttamalla sen arvoksi 6:

arr[2] = 6
print(arr) 

Matriisimenetelmät

- array moduuli tarjoaa useita tapoja käsitellä taulukoita:

  • append() – Lisää elementin taulukon loppuun:

    arr.append(7)
    print(arr) 
  • extend() – Lisää iteroitavia elementtejä loppuun:

    arr.extend([8, 9])
    print(arr) 
  • pop() – Poistaa ja palauttaa elementin annettuun kohtaan:

    arr.pop(2)
    print(arr) 
  • remove(): Poistaa määritetyn arvon ensimmäisen esiintymän:

    arr.remove(2)
    print(arr) 
  • reverse(): Kääntää taulukon järjestyksen:

    arr.reverse()
    print(arr) 

Huomautus: Menetelmiä on enemmän kuin tässä luettelemme. Viittaavat virallinen Python-dokumentaatio nähdäksesi luettelon kaikista käytettävissä olevista menetelmistä array moduuli.

Kun taas array moduuli tarjoaa muistia tehokkaamman tavan tallentaa perustietotyyppejä, joten sen muistaminen on tärkeää rajoitukset. Toisin kuin luettelot, taulukot ovat homogeeninen. Tämä tarkoittaa, että taulukon kaikkien elementtien on oltava samaa tyyppiä. Lisäksi voit vain säilyttää C-tyylisiä perustietotyyppejä taulukoissa. Jos sinun on tallennettava mukautettuja objekteja tai muita Python-tyyppejä, sinun on käytettävä luetteloa tai muuta tietorakennetta.

NumPy-taulukot

NumPy, lyhenne sanoista Numerical Python, on peruspaketti Pythonin numeerisiin laskelmiin. Yksi sen tärkeimmistä ominaisuuksista on sen voimakkuus N-ulotteinen taulukkoobjekti, joka tarjoaa nopeat toiminnot taulukoille, mukaan lukien matemaattiset, loogiset, muodonkäsittelyt ja paljon muuta.

NumPy-taulukot ovat monipuolisempia kuin Pythonin sisäänrakennettu array moduuli ja ovat perustietoa tietotieteen ja koneoppimisprojekteissa.

Miksi käyttää NumPy-taulukoita?

Ensimmäinen asia joka tulee mieleen on suorituskyky. NumPy-taulukot on toteutettu C-kielellä ja mahdollistavat tehokkaan muistin tallennuksen ja nopeammat toiminnot optimoitujen algoritmien ja vierekkäisen muistin tallennuksen etujen ansiosta.

Pythonin sisäänrakennetut listat ja taulukot ovat yksiulotteisia, mutta NumPy-taulukot voivat olla moniulotteinen, joten ne ovat ihanteellisia matriisien tai tensorien esittämiseen.

Tutustu käytännönläheiseen, käytännölliseen Gitin oppimisoppaaseemme, jossa on parhaat käytännöt, alan hyväksymät standardit ja mukana tuleva huijauslehti. Lopeta Git-komentojen googlailu ja oikeastaan oppia se!

Lopuksi NumPy tarjoaa a laaja valikoima toimintoja käyttää näitä taulukoita perusaritmetiikasta edistyneisiin matemaattisiin operaatioihin, uudelleenmuotoiluun, jakamiseen ja muihin.

Huomautus: Kun tiedät etukäteen tietojen koon, muistin ennakkovaraaminen taulukoille (etenkin NumPyssä) voi parantaa suorituskykyä.

NumPy-taulukon luominen

Jos haluat käyttää NumPyä, sinun on ensin asennettava se (pip install numpy) ja tuo se sitten:

import numpy as np

Tuonnin jälkeen voit luoda NumPy-taulukon käyttämällä array() toiminto:

arr = np.array([1, 2, 3, 4, 5])
print(arr) 

Voit myös luoda moniulotteisia taulukoita:

matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(matrix)

Tämä antaa meille:

[[1 2 3] [4 5 6] [7 8 9]]

Näiden perustapojen lisäksi, joilla voimme luoda taulukoita, NumPy tarjoaa meille muita älykkäitä tapoja luoda taulukoita. Yksi niistä on arange() menetelmä. Se luo taulukoita säännöllisesti kasvavilla arvoilla:

arr = np.arange(10)
print(arr) 

Toinen on linspace() menetelmä, joka luo taulukoita tietyllä määrällä elementtejä, jotka on sijoitettu tasavälein määritettyjen alku- ja loppuarvojen väliin:

even_space = np.linspace(0, 1, 5)
print(even_space) 

Elementtien käyttö ja muokkaaminen

NumPy-taulukon elementtien käyttö ja muokkaaminen on intuitiivista:

print(arr[2]) arr[2] = 6
print(arr) 

Teet melko saman moniulotteisille taulukoille:

print(matrix[1, 2]) matrix[1, 2] = 10
print(matrix)

Muuttaa toisen rivin elementin arvon (indeksi 1) ja kolmas sarake (indeksi 2):

[[1 2 3] [4 5 20] [7 8 9]]

Taulukon muodon muuttaminen

NumPy tarjoaa monia toimintoja ja menetelmiä taulukoiden käsittelemiseen ja käyttämiseen. Voit käyttää esimerkiksi reshape() menetelmä muuttaa taulukon muotoa. Oletetaan, että meillä on yksinkertainen taulukko:

import numpy as np arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
print("Original Array:")
print(arr) 

Ja haluamme muotoilla sen uudelleen 3 × 4 -matriisiksi. Sinun tarvitsee vain käyttää reshape() menetelmä, jossa halutut mitat välitetään argumenteina:


reshaped_arr = arr.reshape(3, 4)
print("Reshaped Array (3x4):")
print(reshaped_arr)

Tämä johtaa:

Reshaped Array (3x4):
[[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]

Matriisin kertolasku

- numpy.dot() menetelmää käytetään matriisin kertolasku. Se palauttaa kahden taulukon pistetulon. Yksiulotteisille taulukoille se on sisäinen tuote taulukoista. 2-ulotteisille taulukoille se vastaa matriisin kertolasku, ja ND:lle se on a summatuote ensimmäisen taulukon viimeisen akselin yli ja toisen taulukon toisesta viimeiseen.

Katsotaan kuinka se toimii. Lasketaan ensin kahden 1-D-taulukon pistetulo (vektorien sisätulo):

import numpy as np vec1 = np.array([1, 2, 3])
vec2 = np.array([4, 5, 6])
dot_product_1d = np.dot(vec1, vec2) print("Dot product of two 1-D arrays:")
print(dot_product_1d) 

Tämä johtaa:

Dot product of two 1-D arrays:
32

32 on itse asiassa kahden taulukon sisätulo - (14 + 25 + 3*6). Seuraavaksi voimme suorittaa kahden 2-D-taulukon matriisikertomisen:


mat1 = np.array([[1, 2], [3, 4]])
mat2 = np.array([[2, 0], [1, 3]])
matrix_product = np.dot(mat1, mat2) print("Matrix multiplication of two 2-D arrays:")
print(matrix_product) 

Mikä antaa meille:

Matrix multiplication of two 2-D arrays:
[[ 4 6] [10 12]]

NumPy-taulukot ovat merkittävä askel eteenpäin Pythonin sisäänrakennetuista luetteloista ja array moduuli, erityisesti tieteellisiä ja matemaattisia laskelmia varten. Niiden tehokkuus yhdistettynä NumPy-kirjaston tarjoamiin runsaisiin toimintoihin tekee niistä korvaamattoman työkalun kaikille, jotka haluavat tehdä numeerisia toimintoja Pythonissa.

Yhteenveto

Arrays, tietojenkäsittelytieteen ja ohjelmoinnin kulmakivi, ovat osoittaneet arvonsa kerta toisensa jälkeen erilaisissa sovelluksissa ja aloilla. Pythonissa tämä perustietorakenne erilaisten inkarnaatioiden, kuten luetteloiden, kautta array moduuli ja tehokkaat NumPy-taulukot tarjoavat kehittäjille sekoituksen tehokkuutta, monipuolisuutta ja yksinkertaisuutta.

Tämän oppaan aikana olemme kulkeneet taulukoiden peruskonsepteista niiden käytännön sovelluksiin Pythonissa. Olemme nähneet, kuinka taulukot, niiden muistia vierekkäin, tarjoavat nopeat käyttöajat ja kuinka Pythonin dynaamiset luettelot tuovat lisää joustavuutta. Olemme myös perehtyneet NumPyn erikoistuneeseen maailmaan, jossa taulukot muuttuvat tehokkaiksi numeerisen laskennan työkaluiksi.

Aikaleima:

Lisää aiheesta Stackabus