Grundlæggende Lineær Algebra med NumPy
Lineær algebra er en grundlæggende gren af matematik, der spiller en afgørende rolle inden for forskellige områder, herunder maskinlæring, dyb læring og dataanalyse.
Vektorer og matricer
I lineær algebra er en vektor et ordnet sæt af værdier. 1D NumPy-arrays kan effektivt repræsentere vektorer. En matrix er et todimensionelt array af tal, som kan repræsenteres af et 2D-array i NumPy.
Vi har allerede gennemgået vektor- og matrixaddition og -subtraktion samt skalarmultiplikation i kapitlet "Grundlæggende matematiske operationer". Her vil vi fokusere på andre operationer.
Transponering
Transponering er en operation, der vender en matrix over dens diagonal. Med andre ord omdanner den rækkerne i matricen til kolonner og kolonnerne til rækker.
Du kan transponere en matrix ved at bruge attributten .T på et NumPy array:
12345import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
Prikprodukt
Prikproduktet er sandsynligvis den mest anvendte lineære algebraoperation inden for maskinlæring og dyb læring. Prikproduktet af to vektorer (som skal have samme antal elementer) er summen af deres elementvise produkter. Resultatet er en skalar:
Matrixmultiplikation
Matrixmultiplikation er kun defineret, hvis antallet af kolonner i den første matrix er lig antallet af rækker i den anden matrix. Den resulterende matrix vil have samme antal rækker som den første matrix og samme antal kolonner som den anden matrix.
Som det kan ses, er hvert element i den resulterende matrix prikproduktet af to vektorer. Rækkenummeret for elementet svarer til nummeret på rækkevektoren i den første matrix, og kolonnenummeret svarer til nummeret på kolonnevektoren i den anden matrix.
Antallet af kolonner i den første matrix skal være lig antallet af rækker i den anden matrix, da prikproduktet kræver, at de to vektorer har samme antal elementer.
Prikprodukt og matrixmultiplikation i NumPy
NumPy tilbyder funktionen dot() til både prikprodukt og matrixmultiplikation. Denne funktion tager to arrays som argumenter.
Du kan dog også bruge operatoren @ mellem to arrays for at opnå samme resultat.
12345678910111213import 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 højre argument i matrixmultiplikation er en vektor (1D-array), behandler NumPy den som en matrix, hvor sidste dimension er 1. For eksempel, når man multiplicerer en 6x4 matrix med en vektor med 4 elementer, betragtes vektoren som en 4x1 matrix.
Hvis venstre argument i matrixmultiplikation er en vektor, behandler NumPy den som en matrix, hvor første dimension er 1. For eksempel, når man multiplicerer en vektor med 4 elementer med en 4x6 matrix, behandles vektoren som en 1x4 matrix.
Billedet nedenfor viser strukturen af arraysene exam_scores og coefficients, der bruges i opgaven:
Swipe to start coding
Du arbejder med arrayet exam_scores, som indeholder simulerede eksamensresultater for tre studerende (hver række repræsenterer en studerende) på tværs af tre fag (hver kolonne repræsenterer et fag).
- Multiplicer resultaterne for hver fagprøve med den respektive koefficient.
- Læg de resulterende point sammen for hver studerende for at beregne deres endelige score.
- Beregn prikproduktet mellem
exam_scoresogcoefficients.
Dette giver dig de endelige resultater for alle studerende baseret på de vægtede bidrag fra deres fagresultater.
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 3.7
Grundlæggende Lineær Algebra med NumPy
Stryg for at vise menuen
Lineær algebra er en grundlæggende gren af matematik, der spiller en afgørende rolle inden for forskellige områder, herunder maskinlæring, dyb læring og dataanalyse.
Vektorer og matricer
I lineær algebra er en vektor et ordnet sæt af værdier. 1D NumPy-arrays kan effektivt repræsentere vektorer. En matrix er et todimensionelt array af tal, som kan repræsenteres af et 2D-array i NumPy.
Vi har allerede gennemgået vektor- og matrixaddition og -subtraktion samt skalarmultiplikation i kapitlet "Grundlæggende matematiske operationer". Her vil vi fokusere på andre operationer.
Transponering
Transponering er en operation, der vender en matrix over dens diagonal. Med andre ord omdanner den rækkerne i matricen til kolonner og kolonnerne til rækker.
Du kan transponere en matrix ved at bruge attributten .T på et NumPy array:
12345import numpy as np matrix = np.array([[1, 2, 3], [4, 5, 6]]) # Transposing a matrix transposed_matrix = matrix.T print(transposed_matrix)
Prikprodukt
Prikproduktet er sandsynligvis den mest anvendte lineære algebraoperation inden for maskinlæring og dyb læring. Prikproduktet af to vektorer (som skal have samme antal elementer) er summen af deres elementvise produkter. Resultatet er en skalar:
Matrixmultiplikation
Matrixmultiplikation er kun defineret, hvis antallet af kolonner i den første matrix er lig antallet af rækker i den anden matrix. Den resulterende matrix vil have samme antal rækker som den første matrix og samme antal kolonner som den anden matrix.
Som det kan ses, er hvert element i den resulterende matrix prikproduktet af to vektorer. Rækkenummeret for elementet svarer til nummeret på rækkevektoren i den første matrix, og kolonnenummeret svarer til nummeret på kolonnevektoren i den anden matrix.
Antallet af kolonner i den første matrix skal være lig antallet af rækker i den anden matrix, da prikproduktet kræver, at de to vektorer har samme antal elementer.
Prikprodukt og matrixmultiplikation i NumPy
NumPy tilbyder funktionen dot() til både prikprodukt og matrixmultiplikation. Denne funktion tager to arrays som argumenter.
Du kan dog også bruge operatoren @ mellem to arrays for at opnå samme resultat.
12345678910111213import 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 højre argument i matrixmultiplikation er en vektor (1D-array), behandler NumPy den som en matrix, hvor sidste dimension er 1. For eksempel, når man multiplicerer en 6x4 matrix med en vektor med 4 elementer, betragtes vektoren som en 4x1 matrix.
Hvis venstre argument i matrixmultiplikation er en vektor, behandler NumPy den som en matrix, hvor første dimension er 1. For eksempel, når man multiplicerer en vektor med 4 elementer med en 4x6 matrix, behandles vektoren som en 1x4 matrix.
Billedet nedenfor viser strukturen af arraysene exam_scores og coefficients, der bruges i opgaven:
Swipe to start coding
Du arbejder med arrayet exam_scores, som indeholder simulerede eksamensresultater for tre studerende (hver række repræsenterer en studerende) på tværs af tre fag (hver kolonne repræsenterer et fag).
- Multiplicer resultaterne for hver fagprøve med den respektive koefficient.
- Læg de resulterende point sammen for hver studerende for at beregne deres endelige score.
- Beregn prikproduktet mellem
exam_scoresogcoefficients.
Dette giver dig de endelige resultater for alle studerende baseret på de vægtede bidrag fra deres fagresultater.
Løsning
Tak for dine kommentarer!
single