Python Numpy Tutorial (med Jupyter och Colab)

denna handledning var ursprungligen bidragit med Justin Johnson.

Vi kommer att använda programmeringsspråket Python för alla uppdrag i denna kurs.Python är ett stort allmänt programmeringsspråk på egen hand, men medhjälp av några populära bibliotek (numpy, scipy, matplotlib) blir det en kraftfullmiljö för vetenskaplig databehandling.,

vi förväntar oss att många av er kommer att ha viss erfarenhet av Python och numpy;för resten av er kommer det här avsnittet att fungera som en snabb kraschkurs på bådapythons programmeringsspråk och dess användning för scientificcomputing. Vi introducerar också bärbara datorer, vilket är ett mycket bekvämt sättför mixtrande med Python-kod. Några av er kan ha tidigare kunskap i adifferent språk, i vilket fall vi rekommenderar också att du refererar:NumPy för Matlab användare,Python för R-användare, och/orPython för SAS användare.,

  • listor
  • ordböcker
  • uppsättningar
  • Tuples
  • funktioner
  • klasser
  • Numpy
    • Arrays
    • Array indexering
    • Datatypes
    • Array math
    • Broadcasting
    • numpy dokumentation
  • scipy
    • Bildoperationer
    • Matlab filer
    • avstånd mellan punkter
  • matplotlib
    • plottning
    • subplots
    • bilder
  • jupyter och Colab notebooks

    innan vi dyker in i Python vill vi kortfattat prata om bärbara datorer.,En Jupyter anteckningsbok låter dig skriva och exekverafytonkod lokalt i din webbläsare. Jupyter notebooksmake det mycket enkelt att pilla med kod och köra det i bitsand bitar; av denna anledning är de ofta används i scientificcomputing.Colab å andra sidan är Googles smak avjupyter bärbara datorer som är särskilt lämpad för maskinlärande och dataanalys och som körs helt i molnet.,Colab är i grunden Jupyter notebook på steroider: det är gratis, kräver ingen installation, kommer förinstallerad med många paket,är lätt att dela med världen och drar nytta av fri tillgång till hårdvaruacceleratorer som GPU och TPUs (med vissa varningar).

    kör handledning i Colab (rekommenderas). Om du vill köra den här handledningen helt i Colab klickar du påOpen in Colab – märket högst upp på den här sidan.

    kör handledning i Jupyter Notebook., Om du vill köra anteckningsboken lokalt med Jupyter, se till att din virtuella miljö är korrekt installerad (enligt installationsinstruktionerna), aktivera den och kör sedan pip install notebook för att installera Jupyter notebook. Öppna sedan anteckningsboken och ladda ner den till en valfri katalog genom att högerklicka på sidan och välja Save Page As. Sedancd till den katalogen och körjupyter notebook.

    detta bör automatiskt starta en notebook-server på.,Om allt fungerade korrekt bör du se en skärm som den här och visa allatillgängliga bärbara datorer i den aktuella katalogen. Klicka på jupyter-notebook-tutorial.ipynboch följ instruktionerna i anteckningsboken. Annars kan du fortsätta läsa thetutorial med kodavsnitt nedan.

    Python

    Python är en hög nivå, dynamiskt skrivit multiparadigm programmeringsspråk.Python-kod sägs ofta vara nästan som pseudokod, eftersom det tillåter digatt uttrycka mycket kraftfulla idéer i mycket få rader kod samtidigt som de är mycketläsbara., Som ett exempel, här är en implementering av den klassiska quicksortalgorithm i Python:

    Python versioner

    Från och med Janurary 1, 2020, Python har officiellt tappat stöd för python2.För denna klass kommer all kod att använda Python 3.7. Se till att du har gått igenom installationsinstruktioneroch korrekt installerat enpython3 virtuell miljö innan du fortsätter med den här handledningen.Du kan dubbelkolla din Python-version på kommandoraden efter att ha aktiverat din miljögenom att köra python --version.,

    Grundläggande datatyper

    liksom de flesta språk har Python ett antal grundläggande typer, inklusive heltal,flöten, booleaner och strängar. Dessa datatyper beter sig på sätt som ärbekant från andra programmeringsspråk.

    tal: heltal och flöten fungerar som du kan förvänta dig från andra språk:

    Observera att Python, till skillnad från många språk, inte har unary increment (x++)eller decrement (x--) operatorer.

    Python har också inbyggda typer för komplexa tal;Du kan hitta alla detaljeri dokumentationen.,

    Booleans: Python implementerar alla vanliga operatörer för boolesk logik, men använder engelska ord snarare än symboler (&&, ||, etc.strängar: Python har stort stöd för strängar:

    Strängobjekt har en massa användbara metoder; till exempel:

    Du kan hitta en lista över alla strängmetoder i dokumentationen.

    Behållare

    Python innehåller flera inbyggda containertyper: listor, ordböcker, uppsättningar och tuples.,

    listor

    en lista är Python-motsvarigheten till en array, men är resizeableoch kan innehålla element av olika typer:

    som vanligt kan du hitta alla gory detaljer om listi dokumentationen.

    skivning:förutom att komma åt listelement en åt gången, Python providesconcise syntax för att komma åt sublister; detta är känt som skivning:

    Vi kommer att se skivning igen i samband med numpy arrays.,

    loopar: du kan slinga över elementen i en lista så här:

    animals = for animal in animals: print(animal)# Prints "cat", "dog", "monkey", each on its own line.

    om du vill ha tillgång till indexet för varje element i en slingas kropp,Använd den inbyggda funktionenenumerate:

    listförståelser:vid programmering vill vi ofta omvandla en typ av data till en annan.,Som ett enkelt exempel, överväga följande kod som beräknar kvadratnummer:

    nums = squares = for x in nums: squares.append(x ** 2)print(squares) # Prints 

    Du kan göra denna kod enklare med hjälp av en lista förståelse:

    nums = squares = print(squares) # Prints 

    listförståelser kan också innehålla villkor:

    nums = even_squares = print(even_squares) # Prints ""

    ordböcker

    en ordlista butiker (nyckel, värde) par, liknande en Map I Java Oran objekt i JavaScript., Du kan använda den så här:

    Du kan hitta allt du behöver veta om diktari dokumentationen.

    loopar: det är lätt att iterera över nycklarna i en ordbok:

    om du vill ha tillgång till nycklar och motsvarande värden, använd items – metoden:

    Ordboksförståelser: dessa liknar listförståelser, men låter dig enkelt konstruktdictionaries. Till exempel:

    nums = even_num_to_square = {x: x ** 2 for x in nums if x % 2 == 0}print(even_num_to_square) # Prints "{0: 0, 2: 4, 4: 16}"

    uppsättningar

    en uppsättning är en oordnad samling av olika element., Som ett enkelt exempel, övervägaföljande:

    som vanligt kan allt du vill veta om uppsättningar hittas i dokumentationen.,

    Loops:Iteration över en uppsättning har samma syntax som iteration över en lista;men eftersom uppsättningar är oordnade kan du inte göra antaganden om orderin som du besöker elementen i uppsättningen:

    animals = {'cat', 'dog', 'fish'}for idx, animal in enumerate(animals): print('#%d: %s' % (idx + 1, animal))# Prints "#1: fish", "#2: dog", "#3: cat"

    Set comprehensions:som listor och ordböcker kan vi enkelt konstruera uppsättningar med set comprehensions:

    animals = {'cat', 'dog', 'fish'}for idx, animal in enumerate(animals): print('#%d: %s' % (idx + 1, animal))# Prints "#1: fish", "#2: dog", "#3: cat"

    af6688c426 ” >

    tuples

    en tuple är en (oföränderlig) ordnad lista över värden.,En tupel liknar på många sätt en lista; en av de viktigaste skillnaderna är atttupler kan användas som nycklar i ordböcker och som element i uppsättningar, medan listor inte kan.Här är ett trivialt exempel:

    dokumentationen har mer information om tuples.

    funktioner

    Python-funktioner definieras med hjälp av nyckelordetdef. Till exempel:

    Vi definierar ofta funktioner för att ta valfria sökordsargument, så här:

    det finns mycket mer information om Python-funktioneri dokumentationen.,

    klasser

    syntaxen för att definiera klasser i Python är enkel:

    Du kan läsa mycket mer om Python-klasseri dokumentationen.

    Numpy

    Numpy är kärnbiblioteket för vetenskaplig databehandling i Python.It ger en högpresterande flerdimensionell array objekt, och verktyg för att arbeta med dessaarrays. Om du redan är bekant med MATLAB kan du hittadenna handledning användbar för att komma igång med Numpy.

    arrayer

    en numpy array är ett rutnät av värden, alla av samma typ, och indexeras av en tuple ofnonnegativa heltal., Antalet dimensioner är rangordningen av matrisen; shapeof en array är en tupel av heltal som ger storleken på matrisen längs varje dimension.

    Vi kan initiera numpy arrays från kapslade Python-listor och åtkomstelement med hjälp av hakparenteser:

    Numpy ger också många funktioner för att skapa arrays:

    Du kan läsa om andra metoder för array creationi dokumentationen.

    Array indexering

    Numpy erbjuder flera sätt att indexera i arrayer.

    skivning:liknar Python listor, numpy arrays kan skivas.,Eftersom arrayer kan vara flerdimensionella måste du ange en skiva för varje dimensionav arrayen:

    Du kan också blanda heltalsindexering med skivindexering.Om du gör det kommer det dock att ge en rad lägre rang än den ursprungliga matrisen.Observera att detta är helt annorlunda från hur MATLAB hanterar arrayslicing:

    Integer array indexering:När du index i numpy matriser med skivning, matrisen viewwill alltid vara en subarray av den ursprungliga matrisen. I kontrast, heltal arrayindexing kan du konstruera godtyckliga arrayer med hjälp av data från en annanarray., Här är ett exempel:

    ett användbart trick med indexering av heltal array är att välja eller mutera ett element från varje rad i en matris:

    Boolesk array indexering:Boolesk array indexering kan du plocka ut godtyckliga element i en matris.Ofta används denna typ av indexering för att välja elementen i en arrayatt uppfylla vissa villkor. Här är ett exempel:

    för korthet har vi lämnat ut en hel del detaljer om numpy array indexering; om du vill veta mer bör duläs dokumentationen.

    datatyper

    varje numpy array är ett rutnät av element av samma typ.,Numpy ger en stor uppsättning numeriska datatyper som du kan använda för att konstruera arrayer.Numpy försöker gissa en datatyp när du skapar en array, men funktioner som konstructarrays innehåller vanligtvis också ett valfritt argument för att uttryckligen ange datatypen.Här är ett exempel:

    Du kan läsa allt om numpy datatyper i dokumentationen.,

    Array math

    grundläggande matematiska funktioner fungerar elementvis på arrayer och är tillgängligabåde som operatörsöverbelastningar och som funktioner i numpy-modulen:

    Observera att* till skillnad från MATLAB är elementwise multiplikation, inte matrixmultiplication. Vi använder istället funktionen dot för att beräkna innerprodukter av vektorer, för att multiplicera en vektor med en matris och tomultiply matriser., dot är tillgänglig både som en funktion i numpymodule och som en instansmetod för arrayobjekt:

    Numpy ger många användbara funktioner för att utföra beräkningar påarrays; en av de mest användbara är sum:

    Du kan hitta den fullständiga listan över matematiska funktioner som numpyi dokumentationen tillhandahåller.

    bortsett från att beräkna matematiska funktioner med hjälp av arrayer, vi frequentlyneed att omforma eller på annat sätt manipulera data i matriser., Det enklaste exemplet på denna typ av operation är att överföra en matris; för att införliva en matris,använd bara attributetT för ett arrayobjekt:

    Numpy ger många fler funktioner för att manipulera arrayer; du kan se hela listani dokumentationen.

    Broadcasting

    Broadcasting är en kraftfull mekanism som gör att numpy kan arbeta med matriser av olikashapes när de utför aritmetiska operationer. Ofta har vi en mindre array och alarger array, och vi vill använda den mindre array flera gånger för att utföra vissa operationpå den större array.,

    anta till exempel att vi vill lägga till en konstant vektor till varjeväxa av en matris. Vi kan göra det så här:

    det här fungerar; men när matrisen x är mycket stor, kan en explicit loopin Python vara långsam. Observera att lägga till vektorn v till varje rad i matrisenx motsvarar att bilda en matris vv genom att stapla flera kopior av v vertikalt och sedan utföra elementvis summering av x och vv., Vi kan implementera detta tillvägagångssätt så här:

    Numpy broadcasting tillåter oss att utföra denna beräkning utan att faktiskt skapa flera kopior av v., Tänk på den här versionen med sändning:

    linjen y = x + v fungerar även om x har form (4, 3) och v har form(3,) på grund av sändning; denna linje fungerar som om v hade faktiskt formen (4, 3), där varje rad var en kopia av v, och summan utfördes elementvis.,

    sänder två matriser tillsammans följer dessa regler:

    1. Om matriserna inte har samma rang, Förbered formen på den lägre rank arraywith 1s tills båda formerna har samma längd.
    2. de två arrayerna sägs vara kompatibla i en dimension om de har samma storlek i dimensionen, eller om en av arrayerna har Storlek 1 i den dimensionen.
    3. matriserna kan sändas tillsammans om de är kompatibla i alla dimensioner.
    4. efter sändning beter sig varje matris som om den hade form som är lika med elementwisemaximum av former av de två inmatningsarrayerna.,
    5. i en dimension där en matris hade Storlek 1 och den andra matrisen hade storlek större än 1, beter sig den första matrisen som om den kopierades längs den dimensionen

    om denna förklaring inte är meningsfull, försök läsa förklaringenfrån dokumentationeneller denna förklaring.

    funktioner som stöder sändning kallas universella funktioner. Du kan hittalistan över alla universella funktioneri dokumentationen.,

    här är några program för sändning:

    sändning gör vanligtvis din kod mer koncis och snabbare, så dubör sträva efter att använda den där det är möjligt.

    Numpy dokumentation

    denna korta översikt har berört många av de viktiga saker som du behöver veta om numpy, men är långt ifrån komplett. Kolla in thenumpy referenceto få reda på mycket mer om numpy.

    SciPy

    Numpy ger en högpresterande flerdimensionell array och grundläggande verktyg för attjämföra med och manipulera dessa arrayer.,SciPybuilds på detta, och gerett stort antal funktioner som fungerar på numpy arrays och är användbara förolika typer av vetenskapliga och tekniska applikationer.

    det bästa sättet att bekanta sig med SciPy är tobrowse dokumentationen.Vi kommer att lyfta fram några delar av SciPy som du kanske tycker är användbara för den här klassen.

    Bildoperationer

    SciPy ger några grundläggande funktioner för att arbeta med bilder.Den har till exempel funktioner för att läsa bilder från disk till numpy arrays,för att skriva numpy arrays till disk som bilder och för att ändra storlek på bilder.,Här är ett enkelt exempel som visar upp dessa funktioner:

    vänster: originalbilden. Höger: den tonade och storleksändrade bilden.

    MATLAB-filer

    funktionernascipy.io.loadmat ochscipy.io.savemat låter dig läsa och skriva MATLAB-filer. Du kan läsa om Demi dokumentationen.

    avstånd mellan punkter

    SciPy definierar några användbara funktioner för beräkning avstånd mellan uppsättningar av punkter.,

    funktionenscipy.spatial.distance.pdist beräknar avståndet mellan alla parsof-punkter i en given uppsättning:

    Du kan läsa alla detaljer om den här funktioneni dokumentationen.

    en liknande funktion (scipy.spatial.distance.cdist) beräknar avståndet mellan alla paröver två uppsättningar punkter; du kan läsa om deti dokumentationen.

    Matplotlib

    Matplotlib är en plottning library.In det här avsnittet ger en kort introduktion till modulenmatplotlib.pyplot, som tillhandahåller ett plottningssystem som liknar MATLAB.,

    plottning

    den viktigaste funktionen i matplotlib ärplot,vilket gör att du kan rita 2D-data. Här är ett enkelt exempel:

    att köra den här koden ger följande plot:

    med bara lite extra arbete kan vi enkelt rita flera linesat en gång och lägga till en titel, legend och axeletiketter:

    Du kan läsa mycket mer om plot funkti dokumentationen.,

    Delplotter

    Du kan rita olika saker i samma figur med funktionensubplot.Här är ett exempel:

    Du kan läsa mycket mer om funktionen subplot I dokumentationen.

    bilder

    Du kan använda funktionenimshow för att visa bilder. Här är ett exempel:

    Share

    Lämna ett svar

    Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *