Python-Numpy Tutorial (med Jupyter og Colab)

Denne tutorial var oprindeligt bidraget med Justin Johnson.

Vi vil bruge programmeringssproget Python til alle opgaver i dette kursus.Python er en stor generelle formål programmeringssprog på egen hånd, men med thehelp af et par populære biblioteker (numpy scipy, matplotlib) det bliver en powerfulenvironment for scientific computing.,

Vi forventer, at mange af jer vil have en vis erfaring med Python og numpy;for resten af jer vil dette afsnit fungere som et hurtigt crashkursus på boththe Python programmeringssprog og dets anvendelse til scientificcomputing. Vi introducerer også notesbøger, som er en meget bekvem mådeaf tinkering med Python kode. Nogle af jer kan have tidligere viden i adifferent sprog,i hvilket tilfælde vi også anbefale henvisninger:NumPy for Matlab brugere, Python for R brugere, og/orPython for SAS brugere.,

  • Lister
  • Ordbøger
  • Sæt
  • Elementer
  • Funktioner
  • Klasser
  • Numpy
    • Arrays
    • Array indeksering
    • Datatyper
    • Array matematik
    • Broadcasting
    • Numpy Documentation
  • SciPy
    • Billede operationer
    • MATLAB-filer
    • Afstanden mellem punkt
  • Matplotlib
    • Plotte
    • Subplots
    • Billeder
  • Jupyter og Colab Notebooks

    Før vi dykker ned i Python, vi gerne vil kort tale om notebooks.,En Jupyter notebook kan du skrive og eksekverepython kode lokalt i din browebbro .ser. Jupyter notebooksmake det meget nemt at rode med kode og eksekvere det i bitsand stykker; af denne grund er de udbredt i scientificcomputing.Colab på den anden side er Googles smag afjupyter notebooks, der er særligt velegnet til maskinelearning og dataanalyse, og som kører helt i skyen.,Colab er dybest set Jupyter notebook på steroider: det er gratis, og kræver ingen opsætning,kommer præinstalleret med mange pakker, det er nemt at dele med verden,og byder på gratis adgang til hardware-acceleratorer, ligesom Gpu ‘ er og TPUs (med visse forbehold).

    Kør Tutorial i Colab (anbefales). Hvis du ønsker at køre denne tutorial helt i Colab, skal du klikke påOpen in Colab badge øverst på denne side.

    Kør Tutorial i Jupyter Notebook., Hvis du ønsker at køre den bærbare lokalt med Jupyter, sørg for, at din virtuelle miljø er installeret korrekt (i henhold til installationsvejledning), skal du aktivere det, så kør pip install notebook for at installere Jupyter notebook. Åbn derefter notebook ‘ en og Do .nload den til et bibliotek efter eget valg ved at højreklikke på siden og vælge Save Page As. Derefter cd til den pågældende mappe og kør jupyter notebook.

    Dette skal automatisk starte en notesbog server på .,Hvis alt fungerede korrekt, skal du se en skærm som denne, der viser alletilgængelige bærbare computere i den aktuelle mappe. Klik jupyter-notebook-tutorial.ipynbog følg instruktionerne i den bærbare computer. Ellers kan du fortsætte med at læsetutorial med kodestykker nedenfor.

    Python

    Python er et højt niveau, dynamisk skrevet multiparadigm programmeringssprog.Python-kode siges ofte at være næsten som pseudokode, da det giver dig mulighed for at udtrykke meget kraftfulde ideer i meget få kodelinjer, mens de er meget læsbare., Som et eksempel er her en implementering af den klassiske quickuicksortalgorithm i Python:

    Python-versioner

    fra 1.januar 2020 har Python officielt droppet support til python2.For denne klasse vil al kode bruge Python 3.7. Sørg for, at du har gennemgået installationsvejledningerneog korrekt installeret et python3 virtuelt miljø, før du fortsætter med denne tutorial.Du kan dobbelttjekke din Python-version på kommandolinjen efter aktivering af dit miljøved at køre python --version.,

    grundlæggende datatyper

    som de fleste sprog har Python en række grundlæggende typer, herunder heltal,floats, booleans og strenge. Disse datatyper opfører sig på måder, der erkendt fra andre programmeringssprog.

    Tal: Heltal og flyder arbejde, som du ville forvente fra andre sprog:

    Bemærk, at i modsætning til mange sprog, Python ikke har kær tilvækst (x++)eller formindske (x--) operatører.

    Python har også indbyggede typer til komplekse tal;du kan finde alle detaljernei dokumentationen.,

    Booleans: Python implementerer alle de sædvanlige operatører for boolsk logik, men bruger engelske ord snarere end symboler (&&, || osv.):

    Strenge: Python har stor støtte for strygere:

    String-objekter har en masse nyttige metoder, for eksempel:

    Du kan finde en liste over alle string metoder i dokumentationen.

    containere

    Python indeholder flere indbyggede containertyper: lister, ordbøger, sæt og tupler.,

    lister

    en liste er Python-ækvivalenten til et array, men kan ændre størrelse og kan indeholde elementer af forskellige typer:

    Som sædvanligt kan du finde alle de blodige detaljer om listeri dokumentationen.

    Udskæring:udover at have adgang til listen elementer, en ad gangen, Python providesconcise syntaks til at få adgang til underniveauer; dette er kendt som udskæring:

    Vi vil se udskæring igen i forbindelse med numpy arrays.,

    Sløjfer: Du kan loope over elementerne i en liste som denne:

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

    Hvis du ønsker adgang til de indeks for hvert element i kroppen af et loop,så brug den indbyggede enumerate funktion:

    Liste forståelser:Når du programmerer, ofte vi ønsker at omdanne én type af data til en anden.,Som et enkelt eksempel, kan du overveje følgende kode, som beregner pladsen numre:

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

    Du kan gøre denne kode enklere ved hjælp af en liste forståelse:

    nums = squares = print(squares) # Prints 

    Liste forståelser kan også indeholde betingelser:

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

    Ordbøger

    En ordbog butikker (nøgle, værdi) – par, svarende til en Map i Java oran objekt i Javascript., Du kan bruge det på denne måde:

    Du kan finde alt hvad du behøver at vide om ordbogeri dokumentationen.

    Sløjfer: Det er nemt at iterere over tasterne i en ordbog:

    Hvis du vil have adgang til nøgler og deres tilsvarende værdier, skal du bruge items metode:

    Ordbog forståelser:Disse er magen til liste forståelser, men giver dig mulighed for nemt at constructdictionaries. For eksempel:

    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}"

    Sæt

    Et sæt er en uordnet samling af forskellige elementer., Som et simpelt eksempel overvejefølgende:

    som normalt kan alt, hvad du vil vide om sæt, findesi dokumentationen.,

    Sløjfer:Iteration over en, der har samme syntaks som iteration over en liste;men da sæt er uordnet, du kan ikke gøre antagelser om orderin, som du besøge elementer i sættet:

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

    Sæt forståelser:Som lister og ordbøger, kan vi nemt konstruere sæt ved hjælp sæt forståelser:

    from math import sqrtnums = {int(sqrt(x)) for x in range(30)}print(nums) # Prints "{0, 1, 2, 3, 4, 5}"

    Elementer

    En tupel er en (uforanderlige) ordnet liste af værdier.,En tupel er på mange måder ligner en liste; en af de vigtigste forskelle er thattuples kan bruges som nøgler i ordbøger og som elementer af sæt, mens lister ikke kan.Her er et trivielt eksempel:

    dokumentationen har mere information om tupler.

    funktioner

    pythonfunktioner defineres ved hjælp af def nøgleord. For eksempel:

    Vi definerer ofte funktioner til at tage valgfri søgeordsargumenter, som denne:

    Der er meget mere information om Python-funktioneri dokumentationen.,

    klasser

    syntaksen til definition af klasser i Python er ligetil:

    Du kan læse meget mere om Python klasseri dokumentationen.

    Numpy

    Numpy er kernebiblioteket for videnskabelig databehandling i Python.It giver en højtydende multidimensional array objekt, og værktøjer til at arbejde med thesearrays. Hvis du allerede er bekendt med MATLAB, kan du findedenne tutorial nyttigt at komme i gang med Numpy.

    Arrays

    En numpy array er et gitter af værdier, alle af samme type, og er indekseret af en tupel ofnonnegative heltal., Antallet af dimensioner er rang af arrayet; shapeof et array er en tupel af heltal giver størrelsen af arrayet langs hver dimension.

    Vi kan initialisere numpy arrays fra indlejrede Python-lister,og få adgang til elementer ved hjælp af firkantede parenteser:

    Numpy indeholder også mange funktioner til at oprette arrays:

    Du kan læse om andre metoder til at vifte creationin dokumentationen.

    Array indeksering

    Numpy tilbyder flere måder at indeksere i arrays.i lighed med Python-lister kan numpy arrays skives.,Da arrays kan være multidimensionelle, skal du angive en skive for hver dimensionaf arrayet:

    Du kan også blande heltalsindeksering med skiveindeksering.Hvis du gør det, vil det dog give en række lavere rang end det oprindelige array.Bemærk, at dette er helt anderledes end den måde, MATLAB håndterer arrayslicing på:

    heltal array indeksering:når du indekserer i numpy arrays ved hjælp af skæring, vil den resulterende array vie.altid være et subarray af det originale array. I modsætning hertil heltal arrayinde .ing giver dig mulighed for at konstruere vilkårlige arrays ved hjælp af data fra anotherarray., Her er et eksempel:

    Et nyttigt trick med integer array indeksering er at vælge eller muterer oneelement fra hver række i en matrix:

    Boolean array indeksering:Boolean array indeksering kan du vælge vilkårlige elementer i et array.Ofte bruges denne type indeksering til at vælge elementerne i en matriatder opfylder en vis betingelse. Her er et eksempel:

    for kortfattethed har vi udeladt en masse detaljer om numpy array-indeksering;hvis du vil vide mere, skal du læse dokumentationen.

    datatyper

    hver numpy array er et gitter af elementer af samme type.,Numpy giver et stort sæt af numeriske datatyper, som du kan bruge til at konstruere arrays.Numpy forsøger at gætte en datatype, når du opretter en Matri., men funktioner, constructarrays normalt også indeholde en valgfri argument til udtrykkeligt at angive datatype.Her er et eksempel:

    Du kan læse alt om numpy datatyperi dokumentationen.,

    Array matematik

    Grundlæggende matematiske funktioner fungerer elementwise på arrays, og er availableboth som operatør overbelastninger og som funktioner i numpy-modulet:

    Bemærk, at i modsætning til MATLAB, * er elementwise multiplikation, ikke matrixmultiplication. Vi bruger i stedet funktionen dot til at beregne innerprodukter af vektorer, multiplicere en vektor med en Matri.og tomultiply matricer., dot er tilgængelig både som en funktion i numpymodule og som et eksempel på metode af array-objekter:

    Numpy indeholder mange nyttige funktioner, til at udføre beregninger onarrays; en af de mest nyttige er sum:

    Du kan finde den fulde liste af matematiske funktioner, der tilbydes af numpyin dokumentationen.

    bortset fra at beregne matematiske funktioner ved hjælp af arrays, skal vi ofte omforme eller på anden måde manipulere data i arrays., Den enkleste exampleof denne type operation er, der gennemfører en matrix, for at transponere en matrix,skal du blot bruge T attribut af et array objekt:

    Numpy indeholder mange flere funktioner til at manipulere arrays, og du kan se den fulde listin dokumentationen.

    Broadcasting

    Broadcasting er en kraftfuld mekanisme, der gør det muligt for numpy at arbejde med arrays af forskelligeformer, når der udføres aritmetiske operationer. Ofte har vi et mindre array og alarger array, og vi vil bruge det mindre array flere gange til at udføre nogle operationer på det større array.,Antag for eksempel, at vi vil tilføje en konstant vektor til hverro of af en Matri.. Vi kunne gøre det sådan her:

    Dette fungerer, men når matrix x er meget stor, design og en eksplicit loopin Python kunne være langsom. Bemærk, at tilføje vektor v for hver række i matrixx svarer til at der danner en matrix vv ved at stable flere kopier af v vertikalt,derefter udfører elementwise summation af x og vv., Vi kunne gennemføre thisapproach som dette:

    Numpy-transmission giver os mulighed for at udføre denne beregning uden actuallycreating flere kopier af v., Overveje denne version, ved hjælp af udsendelse:

    linje, y = x + v fungerer, selv om x har formen (4, 3) og v har formen(3,) på grund af radio-og tv; denne linje virker som om v faktisk havde form (4, 3),hvor hver række er en kopi af v, og det beløb, der blev udført elementwise.,

    Broadcasting to arrays sammen følger disse regler:

    1. Hvis arrays ikke har den samme rang, foranstille form af lavere rang arraywith 1s, indtil begge former har samme længde.
    2. de to arrays siges at være kompatible i en dimension, hvis de har samme størrelse i dimensionen, eller hvis et af arrays har Størrelse 1 i den dimension.
    3. arrayerne kan udsendes sammen, hvis de er kompatible i alle dimensioner.
    4. efter udsendelse opfører hvert array sig som om det havde form svarende til elementetmaksimalt af former for de to input arrays.,
    5. I en dimension, hvor et array havde størrelsen 1, og andre array havde størrelse større end 1,første række opfører sig, som om det var kopieret langs denne dimension

    Hvis denne forklaring ikke giver mening, så prøv at læse explanationfrom den documentationor denne forklaring.

    funktioner, der understøtter udsendelse, kaldes universelle funktioner. Du kan findelisten over alle universelle funktioneri dokumentationen.,

    Her er nogle applikationer til udsendelse:

    udsendelse gør typisk din kode mere kortfattet og hurtigere, så du bør stræbe efter at bruge den, hvor det er muligt.

    numpy dokumentation

    denne korte oversigt har berørt mange af de vigtige ting, du har brug forkend om numpy, men er langt fra komplet. Tjek denumpy referencefor at finde ud af meget mere om numpy.

    SciPy

    Numpy giver et højtydende multidimensionelt array og grundlæggende værktøjer til at beregne med og manipulere disse arrays.,SciPybuilds på dette og giveret stort antal funktioner, der opererer på numpy arrays og er nyttige tilforskellige typer videnskabelige og tekniske applikationer.

    den bedste måde at blive fortrolig med SciPy er atbro .se dokumentationen.Vi vil fremhæve nogle dele af SciPy, som du måske finder nyttige til denne klasse.

    billedoperationer

    SciPy giver nogle grundlæggende funktioner til at arbejde med billeder.For eksempel har den funktioner til at læse billeder fra disk til numpy arrays,at skrive numpy arrays til disk som billeder og ændre størrelsen på billeder.,Her er et simpelt eksempel, der viser disse funktioner:

    Venstre: Det oprindelige billede. Til højre: det tonede og ændrede billede.

    MATLAB-filer

    funktioner scipy.io.loadmat og scipy.io.savemat giver dig mulighed for at læse andwrite MATLAB-filer. Du kan læse om Demi dokumentationen.

    afstand mellem punkter

    SciPy definerer nogle nyttige funktioner til beregning af afstande mellem sæt punkter.,

    funktion scipy.spatial.distance.pdist beregner afstanden mellem alle pairsof punkter i et givet sæt:

    Du kan læse alle detaljer om denne functionin dokumentationen.

    En lignende funktion (scipy.spatial.distance.cdist) beregner afstanden mellem alle pairsacross to sæt af punkter, du kan læse om extreme dokumentationen.

    Matplotlib

    Matplotlib er et plotte bibliotek.I dette afsnit give en kort introduktion til matplotlib.pyplot modul,som giver en plotte system, der svarer til MATLAB.,

    Plotte

    Den vigtigste funktion i matplotlib er plot,som giver dig mulighed for at plotte 2D-data. Her er et simpelt eksempel:

    at Køre denne kode, der producerer følgende plot:

    Med bare en lille smule ekstra arbejde, kan vi nemt plot flere linesat én gang, og tilføje en titel, beskrivelse og akse labels:

    Du kan læse meget mere om plot functionin dokumentationen.,

    Underplots

    Du kan plotte forskellige ting i samme figur ved hjælp af funktionensubplot.Her er et eksempel:

    Du kan læse meget mere om subplot functionin dokumentationen.

    billeder

    Du kan bruge funktionen imshow til at vise billeder. Her er et eksempel:

    Share

    Skriv et svar

    Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *