Hur man gör ett genomsnitt av en lista med listor i Python?
Problem: Du har en lista med listor och du vill beräkna medelvärdet av de olika kolumnerna.
Exempel: Du vill få fram medelvärdena för de tre kolumnerna:
data = , , , ]
Det finns tre metoder som löser detta problem:
Det finns tre metoder som löser detta problem: Du kan använda följande metoder:
data = , , , ]
Det finns tre metoder som löser detta problem:
data = , , , ]
Det finns tre metoder som löser detta problem. Du kan leka med dem i det interaktiva skalet och läsa mer detaljer nedan:
Innehållsförteckning
Metod 1: Medelvärde i Python (inget bibliotek)
En enkel one-liner med list comprehension i kombination med funktionen zip()
på den uppackade listan för att transponera listan av listor gör jobbet i Python.
data = , , , ]# Method 1: Pure Pythonres = print(res)#
Älskar du enliningar i Python? Det gör jag helt klart – jag har till och med skrivit en hel bok om det tillsammans med San Francisco-förlaget NoStarch. Klicka för att läsa boken i en ny flik:
Du kan visualisera kodutförandet och minnesobjekten för den här koden i följande verktyg (klicka bara på ”Next” (nästa) för att se hur ett steg i koden utvecklas).
Metod 2: Genomsnitt med NumPy-biblioteket
Du skapar en NumPy-matris av datan och skickar den till funktionen np.average().
data = , , , ]# Method 2: NumPyimport numpy as npa = np.array(data)res = np.average(a, axis=0)print(res)#
Med axis
argumentet i funktionen average definieras längs vilken axel du vill beräkna medelvärdet. Om du vill göra ett medelvärde av kolumnerna definierar du axis=0
. Om du vill göra ett medelvärde för rader definierar du axis=1
. Om du vill göra ett medelvärde över alla värden hoppar du över detta argument.
Metod 3: Mean Statistics Library + Map()
För att visa dig ett annat alternativ är här ett som använder funktionen map()
och vårt trick zip(*data)
för att transponera ”matrisen” data
.
data = , , , ]# Method 3: Statistics + Map()import statisticsres = map(statistics.mean, zip(*data))print(list(res))#
Funktionen map(function, iterable)
tillämpar function
på varje element i iterable
. Som ett alternativ kan du också använda listförståelse som visas i metod 1 i den här handledningen. Guido van Rossum, Pythons skapare och Pythons välvilliga diktator för livet (BDFL), föredrar faktiskt list comprehension framför funktionen map()
.
Vart ska vi gå härifrån?
Genom teori, låt oss få lite praktik!
För att bli framgångsrik inom kodning måste du gå ut och lösa riktiga problem för riktiga människor. Det är så du enkelt kan bli en sexsiffrig inkomsttagare. Och det är så du finslipar de färdigheter du verkligen behöver i praktiken. När allt kommer omkring, vad är det för mening med att lära sig teori som ingen någonsin behöver?
Praktikprojekt är hur du vässar din såg inom kodning!
Vill du bli en kodmästare genom att fokusera på praktiska kodprojekt som faktiskt tjänar pengar och löser problem för människor?
Då ska du bli en frilansande Python-utvecklare! Det är det bästa sättet att närma sig uppgiften att förbättra dina Pythonkunskaper – även om du är helt nybörjare.
Besök mitt kostnadsfria webbseminarium ”How to Build Your High-Income Skill Python” (Hur du bygger upp din höginkomstkompetens i Python) och se hur jag utvecklade mitt kodningsföretag online och hur du också kan göra det – från bekvämligheten av ditt eget hem.
Besök det kostnadsfria webbseminariet nu!
Under tiden som forskare inom distribuerade system fann Dr. Christian Mayer sin kärlek till att undervisa datavetenskapsstudenter.
För att hjälpa studenterna att nå högre nivåer av Python-succé grundade han webbplatsen för programmeringsutbildning Finxter.com. Han är författare till den populära programmeringsboken Python One-Liners (NoStarch 2020), medförfattare till serien Coffee Break Python med egenutgivna böcker, datavetenskapsentusiast, frilansare och ägare till en av de tio största Pythonbloggarna i världen.
Hans passioner är att skriva, läsa och koda. Men hans största passion är att betjäna blivande kodare genom Finxter och hjälpa dem att öka sina färdigheter. Du kan gå med i hans kostnadsfria e-postakademi här.