Kuinka keskiarvoistaa listojen luettelo Pythonissa?

Ongelma: Sinulla on lista listoista ja haluat laskea eri sarakkeiden keskiarvon.

Esimerkki: Annetaan seuraava listaluettelo, jossa on neljä riviä ja kolme saraketta.

data = , , , ]

Tahdot saada kolmen sarakkeen keskiarvot:


On olemassa kolme menetelmää, joilla tämä ongelma voidaan ratkaista. Voit leikkiä niillä interaktiivisessa komentotulkissa ja lukea tarkemmin alta:

Sisällysluettelo

Menetelmä 1: Keskiarvo Pythonissa (ei kirjastoa)

Yksinkertainen yhden rivin komento, jossa käytetään listan ymmärtämistä yhdistettynä zip()-funktioon, jolla purettuun listaan saadaan transponoitua listan lista listojen listaksi, hoitaa homman Pythonissa.

data = , , , ]# Method 1: Pure Pythonres = print(res)# 

Pystytkö rakastamaan Pythonin one-linereita? Minä varmasti rakastan – olen jopa kirjoittanut siitä kokonaisen kirjan San Franciscon kustantajan NoStarchin kanssa. Klikkaa kirjaa uudessa välilehdessä:

Voit havainnollistaa tämän koodin suorituksen ja muistiobjektit seuraavassa työkalussa (klikkaa vain ”Seuraava” nähdäksesi, miten yksi koodin vaihe etenee).

Menetelmä 2: Keskiarvo NumPy-kirjastolla

Luot datasta NumPy-matriisin ja annat sen funktiolle np.average().

data = , , , ]# Method 2: NumPyimport numpy as npa = np.array(data)res = np.average(a, axis=0)print(res)# 

Keskiarvofunktion axis-argumentilla määritetään, mitä akselia pitkin keskiarvo lasketaan. Jos haluat keskiarvottaa sarakkeita, määritä axis=0. Jos haluat keskiarvon riveille, määritä axis=1. Jos haluat keskiarvon kaikista arvoista, jätä tämä argumentti pois.

Menetelmä 3: Keskiarvotilastokirjasto + Map()

Näyttääkseni toisen vaihtoehdon, tässä on yksi, jossa käytetään map()-funktiota ja meidän zip(*data)-temppua ”matriisin” data transponoimiseksi.

data = , , , ]# Method 3: Statistics + Map()import statisticsres = map(statistics.mean, zip(*data))print(list(res))# 

Funktio map(function, iterable) soveltaa function jokaiseen elementtiin iterable:ssa. Vaihtoehtoisesti voit myös käyttää listan ymmärtämistä, kuten tämän ohjeen menetelmässä 1 on esitetty. Itse asiassa Guido van Rossum, Pythonin luoja ja Pythonin hyväntahtoinen elämän diktaattori (BDFL), suosii listan ymmärtämistä map()-funktion sijaan.

Miten tästä eteenpäin?

Teoriaa riittää, lähdetään harjoittelemaan!

Koodauksessa menestyäksesi sinun on päästävä ulos ja ratkaistava oikeita ongelmia oikeille ihmisille. Näin sinusta voi tulla kuusinumeroinen ansaitsija helposti. Ja näin hiot oikeasti tarvitsemiasi taitoja käytännössä. Loppujen lopuksi, mitä hyötyä on opetella teoriaa, jota kukaan ei koskaan tarvitse?

Käytännön projekteissa terävöität sahaasi koodauksessa!

Tahdotko tulla koodimestariksi keskittymällä käytännön koodiprojekteihin, joilla oikeasti tienaat rahaa ja jotka ratkaisevat ongelmia ihmisille?

Sitten ryhdy Python-freelancer-kehittäjäksi! Se on paras tapa lähestyä Python-taitojesi parantamista – vaikka olisitkin täysin aloittelija.

Liity ilmaiseen webinaariini ”Kuinka rakentaa korkean tulotason Python-taitosi” ja katso, kuinka kasvatin koodausbisnestäsi verkossa ja kuinka sinäkin voit tehdä sen – mukavasti omasta kodistasi.

Liity ilmaiseen webinaariin nyt!

Työskennellessään hajautettujen järjestelmien tutkijana tohtori Christian Mayer löysi rakkautensa tietojenkäsittelytieteen opiskelijoiden opettamiseen.

Voidakseen auttaa opiskelijoita saavuttamaan korkeamman tason Python-menestyksen hän perusti ohjelmointikoulutuksen verkkosivuston Finxter.com. Hän on suositun ohjelmointikirjan Python One-Liners (NoStarch 2020) kirjoittaja, Coffee Break Python -sarjan omakustannekirjojen toinen kirjoittaja, tietotekniikan harrastaja, freelancer ja yhden maailman kymmenen suurimman Python-blogin omistaja.

Hänen intohimonsa ovat kirjoittaminen, lukeminen ja koodaaminen. Hänen suurin intohimonsa on kuitenkin palvella Finxterin kautta aloittelevia koodareita ja auttaa heitä parantamaan taitojaan. Voit liittyä hänen ilmaiseen sähköpostiakatemiaansa täällä.

Vastaa

Sähköpostiosoitettasi ei julkaista.