Grunnleggende Lineær Algebra med NumPy
Lineær algebra er en grunnleggende gren av matematikk som spiller en avgjørende rolle i ulike felt, inkludert maskinlæring, dyp læring og dataanalyse.
Vektorer og Matriser
I lineær algebra er en vektor et ordnet sett med verdier. 1D NumPy-arrayer kan effektivt representere vektorer. En matrise er et todimensjonalt array av tall, som kan representeres av en 2D-array i NumPy.
Vi har allerede dekket vektor- og matriseaddisjon og -subtraksjon, samt skalar multiplikasjon, i kapittelet "Grunnleggende Matematiske Operasjoner". Her vil vi fokusere på andre operasjoner.
Transponering
Transponering er en operasjon som snur en matrise over dens diagonal. Med andre ord, den konverterer radene i matrisen til kolonner og kolonnene til rader.
Du kan transponere en matrise ved å bruke .T
attributtet til en NumPy array:
import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
Prikkprodukt
Prikkproduktet er kanskje den mest brukte lineære algebraoperasjonen innen maskin- og dyp læring. Prikkproduktet av to vektorer (som må ha et likt antall elementer) er summen av deres elementvise produkter. Resultatet er en skalar:
Matrisemultiplikasjon
Matrisemultiplikasjon er kun definert hvis antallet kolonner i den første matrisen er likt antallet rader i den andre matrisen. Den resulterende matrisen vil ha samme antall rader som den første matrisen og samme antall kolonner som den andre matrisen.
Som du kan se, er hvert element i den resulterende matrisen prikkproduktet av to vektorer. Radnummeret til elementet tilsvarer nummeret på radvektoren i den første matrisen, og kolonnenummeret tilsvarer nummeret på kolonnevektoren i den andre matrisen.
Antall kolonner i den første matrisen må være lik antall rader i den andre matrisen, da prikkproduktet krever at de to vektorene har samme antall elementer.
Prikkprodukt og Matrisemultiplikasjon i NumPy
NumPy tilbyr dot()
-funksjonen for både prikkprodukt og matrisemultiplikasjon. Denne funksjonen tar to matriser som sine argumenter.
Du kan imidlertid også bruke @
operatoren mellom to matriser for å oppnå de samme resultatene.
import numpy as np vector_1 = np.array([1, 2, 3]) vector_2 = np.array([4, 5, 6]) # Dot product using the dot() function print(np.dot(vector_1, vector_2)) # Dot product using the @ operator print(vector_1 @ vector_2) matrix_1 = np.array([[1, 2, 3], [4, 5, 6]]) matrix_2 = np.array([[7, 10], [8, 11], [9, 12]]) # Matrix multiplication using the dot() function print(np.dot(matrix_1, matrix_2)) # Matrix multiplication using the @ operator print(matrix_1 @ matrix_2)
Hvis det høyre argumentet i matrise-multiplikasjon er en vektor (1D array), behandler NumPy det som en matrise hvor den siste dimensjonen er 1. For eksempel, når man multipliserer en 6x4
matrise med en vektor med 4
elementer, betraktes vektoren som en 4x1
matrise.
Hvis det venstre argumentet i matrise-multiplikasjon er en vektor, behandler NumPy det som en matrise hvor den første dimensjonen er 1. For eksempel, når man multipliserer en vektor med 4
elementer med en 4x6
matrise, behandles vektoren som en 1x4
matrise.
Bildet nedenfor viser strukturen til exam_scores
og coefficients
arrayene brukt i oppgaven:
Swipe to start coding
Du jobber med exam_scores
-arrayet, som inneholder simulerte eksamensresultater for tre studenter (hver rad representerer en student) på tvers av tre fag (hver kolonne representerer et fag).
-
Multipliser poengene for hver fagprøve med den respektive koeffisienten.
-
Legg til de resulterende poengene for hver student for å beregne deres endelige poengsum.
-
Beregn prikkproduktet mellom
exam_scores
ogcoefficients
.
Dette vil gi deg de endelige poengene for alle studenter basert på de vektede bidragene fra deres fagpoeng.
Løsning
Takk for tilbakemeldingene dine!