Python: Vektorer, Matriser og Arrays med NumPy
i denne leksjonen vil vi se på noen fine tips og triks for å leke med vektorer, matriser og arrays ved Hjelp Av NumPy library I Python. Denne leksjonen er et veldig godt utgangspunkt hvis Du kommer i Gang Med Datavitenskap og trenger litt innledende matematisk oversikt over disse komponentene og hvordan vi kan leke med Dem ved Hjelp Av NumPy i kode.NumPy library tillater oss å utføre ulike operasjoner som må gjøres på datastrukturer som ofte brukes I Maskinlæring og Datavitenskap som vektorer, matriser og arrays. Vi vil bare vise de vanligste operasjonene Med NumPy som brukes i Mange Maskinlæringsrørledninger. Til slutt, vær oppmerksom på At NumPy bare er en måte å utføre operasjonene på, så de matematiske operasjonene vi viser er hovedfokuset i denne leksjonen og ikke NumPy-pakken selv. La oss komme i gang.
- Hva Er En Vektor?
- Å Lage En Matrise
- Ved hjelp av En Sparsom Matrise
- Bruke Operasjoner på Alle Vektorelementer
- Gjennomsnitt, Varians og Standardavvik
- Transponering Av En Matrise
- Flatere En Matrise
- Beregning Av Egenverdier og Egenvektorer
- Punktprodukter Av Vektorer
- Legge Til, Trekke Fra Og Multiplisere Matriser
- konklusjon
Hva Er En Vektor?
Ifølge Google er En Vektor en mengde som har retning og størrelse, spesielt som å bestemme posisjonen til ett punkt i rommet i forhold til et annet.
Vektorer er svært viktige I Maskinlæring, da De ikke bare beskriver størrelsen, men også retningen til funksjonene. Vi kan lage en vektor I NumPy med følgende kodebit:
row_vector = np.array ()
print (row_vector)
i kodebiten ovenfor opprettet vi en radvektor. Vi kan også lage en kolonnevektor som:
col_vector = np.matrise (,,])
print(col_vector)
Å Lage En Matrise
en matrise kan bare forstås som en todimensjonal matrise. Vi kan lage en matrise Med NumPy ved å lage et flerdimensjonalt array:
print (matrix)
selv om matrisen er nøyaktig lik flerdimensjonal matrise, anbefales ikke matrisedatastrukturen på grunn av to grunner:
- matrisen er standarden når det gjelder numpy-pakken
- De Fleste operasjonene Med NumPy returnerer arrays og ikke en matrise
Ved hjelp av En Sparsom Matrise
for å minne om at en sparsom matrise er den der de fleste elementene er null. Nå er et vanlig scenario i databehandling og maskinlæring behandling av matriser der de fleste elementene er null. Tenk for eksempel på en matrise der radene beskriver hver video På Youtube, og kolonner representerer hver registrerte bruker. Hver verdi representerer om brukeren har sett en video eller ikke. Selvfølgelig vil flertallet av verdiene i denne matrisen være null. Fordelen med sparsom matrise er at den ikke lagrer verdiene som er null. Dette resulterer i en stor beregningsfordel og lagringsoptimalisering også.
la oss lage en gnistmatrise her:
for å forstå hvordan koden fungerer, vil vi se på utgangen her:
i koden ovenfor brukte Vi en Numpys funksjon for å lage En Komprimert sparsom radmatrise der ikke-nullelementer er representert ved hjelp av nullbaserte indekser. Det finnes ulike typer sparsom matrise, som:
- Komprimert sparsom kolonne
- Liste over lister
- Ordbok av nøkler
Vi vil ikke dykke inn i andre sparsomme matriser her, men vet at hver av deres bruk er spesifikk og ingen kan betegnes som ‘best’.
Bruke Operasjoner på Alle Vektorelementer
det er et vanlig scenario når vi må bruke en felles operasjon på flere vektorelementer. Dette kan gjøres ved å definere en lambda og deretter vektorisere det samme. La oss se noen kodebit for det samme:
,
])
mul_5 = lambda x: x * 5
vectorized_mul_5 = np.vectorize(mul_5)
vectorized_mul_5 (matrix)
for å forstå hvordan koden fungerer, vil vi se på utgangen her:
i kodebiten ovenfor brukte vi vectorize-funksjonen som er en del Av numpy-biblioteket, for å forvandle en enkel lambda-definisjon til en funksjon som kan behandle hvert element av vektoren. Det er viktig å merke seg at vectorize bare er en sløyfe over elementene, og det har ingen effekt på programmets ytelse. NumPy tillater også kringkasting, noe som betyr at i stedet for den ovennevnte komplekse koden, kunne vi ganske enkelt ha gjort:
og resultatet ville vært nøyaktig det samme. Jeg ønsket å vise den komplekse delen først, ellers ville du ha hoppet over delen!
Gjennomsnitt, Varians og Standardavvik
Med NumPy er det enkelt å utføre operasjoner relatert til beskrivende statistikk på vektorer. Gjennomsnitt av en vektor kan beregnes som:
Varians av en vektor kan beregnes som:
Standardavvik for en vektor kan beregnes som:
utgangen av kommandoene ovenfor på den gitte matrisen er gitt her:
Transponering Av En Matrise
Transponering er en veldig vanlig operasjon som du vil høre om når du er omgitt av matriser. Transponering er bare en måte å bytte kolonne-og radverdier av en matrise. Vær oppmerksom på at en vektor ikke kan transponeres som en vektor er bare en samling av verdier uten at disse verdiene blir kategorisert i rader og kolonner. Vær oppmerksom på at konvertering av en radvektor til en kolonnevektor ikke transponerer (basert på definisjonene av lineær algebra, som er utenfor omfanget av denne leksjonen).
For nå vil vi finne fred bare ved å transponere en matrise. Det er veldig enkelt å få tilgang til transponeringen av en matrise med NumPy:
utgangen av kommandoen ovenfor på den gitte matrisen er gitt her:
Samme operasjon kan utføres på en radvektor for å konvertere den til en kolonnevektor.
Flatere En Matrise
Vi kan konvertere en matrise til en endimensjonal matrise hvis vi ønsker å behandle dens elementer på en lineær måte. Dette kan gjøres med følgende kodebit:
utgangen av kommandoen ovenfor på den gitte matrisen er gitt her:
Merk at flatten-matrisen er en endimensjonal matrise, bare lineær i mote.
Beregning Av Egenverdier og Egenvektorer
Egenvektorer brukes svært ofte i Maskinlæringspakker. Så, når en lineær transformasjonsfunksjon presenteres som en matrise, Er X, Egenvektorer vektorene som bare endres i vektorens skala, men ikke dens retning. Vi kan si at:
Her Er X kvadratmatrisen og γ Inneholder Egenverdiene. Også, v inneholder Egenvektorer. Med NumPy er det enkelt å beregne Egenverdier og Egenvektorer. Her er kodebiten der vi demonstrerer det samme:
utgangen av kommandoen ovenfor på den gitte matrisen er gitt her:
Punktprodukter Av Vektorer
Punktprodukter Av Vektorer er en måte å multiplisere 2 vektorer på. Det forteller deg hvor mye av vektorene er i samme retning, i motsetning til kryssproduktet som forteller deg motsatt, hvor lite vektorene er i samme retning (kalt ortogonale). Vi kan beregne prikkproduktet av to vektorer som gitt i kodebiten her:
b = np.array ()
np.dot (a, b)
utgangen av kommandoen ovenfor på de gitte arrays er gitt her:
Legge Til, Trekke Fra Og Multiplisere Matriser
Legge til og Trekke fra flere matriser er ganske enkel operasjon i matriser. Det er to måter som dette kan gjøres. La oss se på kodebiten for å utføre disse operasjonene. For å holde dette enkelt, vil vi bruke samme matrise to ganger:
neste kan to matriser trekkes som:
utgangen av kommandoen ovenfor på den gitte matrisen er gitt her:
som forventet blir hver av elementene i matrisen lagt til / trukket med det tilsvarende elementet. Multiplikasjon av en matrise ligner på å finne prikkproduktet som vi gjorde tidligere:
koden ovenfor finner den sanne multiplikasjonsverdien av to matriser, gitt som:
utgangen av kommandoen ovenfor på den gitte matrisen er gitt her:
konklusjon
i denne leksjonen gikk vi gjennom mange matematiske operasjoner relatert til vektorer, matriser og arrays som ofte brukes databehandling, beskrivende statistikk og datavitenskap. Dette var en rask leksjon som bare dekker de vanligste og viktigste delene av det brede spekteret av konsepter, men disse operasjonene bør gi en veldig god ide om hva alle operasjoner kan utføres mens de håndterer disse datastrukturene.
vennligst del din tilbakemelding fritt om leksjonen På Twitter med @ linuxhint og @sbmaggarwal(det er meg !).