Python-matriisi ja johdanto NumPy-palveluun

Tässä artikkelissa opit Python-matriiseista sisäkkäisten luetteloiden ja NumPy-paketin avulla.

Matriisi on kaksiulotteinen tietorakenne, jossa numerot on järjestetty riveihin ja sarakkeisiin. Esimerkiksi:

Tämä matriisi on 3x4-matriisi (lausutaan "kolme kertaa neljä"), koska siinä on 3 riviä ja 4 saraketta.

Python-matriisi

Pythonilla ei ole sisäänrakennettua tyyppiä matriiseille. Voimme kuitenkin käsitellä luetteloluetteloa matriisina. Esimerkiksi:

 A = ((1, 4, 5), (-5, 8, 9)) 

Voimme käsitellä tätä luetteloluetteloa matriisina, jossa on 2 riviä ja 3 saraketta.

Muista oppia Python-luetteloista ennen tämän artikkelin jatkamista.

Katsotaanpa, kuinka työskennellä sisäkkäisten luetteloiden kanssa.

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) print("A =", A) print("A(1) =", A(1)) # 2nd row print("A(1)(2) =", A(1)(2)) # 3rd element of 2nd row print("A(0)(-1) =", A(0)(-1)) # Last element of 1st Row column = (); # empty list for row in A: column.append(row(2)) print("3rd column =", column) 

Kun suoritamme ohjelmaa, tulos on:

 A = ((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19)) A (1) = (-5, 8, 9, 0) A (1) (2) = 9 A (0) (- 1) = 12 3. sarake = (5, 9, 11) 

Tässä on muutama esimerkki sisäkkäisiä luetteloita käyttävistä Python-matriiseista.

  • Lisää kaksi matriisia
  • Transponoi matriisi
  • Kerro kaksi matriisia

Sisäkkäisten luetteloiden käyttäminen matriisina toimii yksinkertaisissa laskennallisissa tehtävissä, mutta on parempi tapa työskennellä matriisien kanssa Pythonissa NumPy-paketin avulla.

NumPy-taulukko

NumPy on tieteellisen laskennan paketti, joka tukee voimakasta N-ulotteista taulukkoobjektia. Ennen kuin voit käyttää NumPyä, sinun on asennettava se. Lisätietoja,

  • Käy: Kuinka asentaa NumPy?
  • Jos käytössäsi on Windows, lataa ja asenna Pythonin anaconda-jakelu. Sen mukana tulee NumPy ja muut useat datatieteeseen ja koneoppimiseen liittyvät paketit.

Kun NumPy on asennettu, voit tuoda ja käyttää sitä.

NumPy tarjoaa moniulotteisen numeroryhmän (joka on itse asiassa objekti). Otetaan esimerkki:

 import numpy as np a = np.array((1, 2, 3)) print(a) # Output: (1, 2, 3) print(type(a)) # Output: 

Kuten näette, NumPyn matriisiluokkaa kutsutaan ndarray.

Kuinka luoda NumPy-taulukko?

NumPy-taulukoita voidaan luoda useilla tavoilla.

1. Kokonaislukujen, kelluvien ja kompleksilukujen taulukko

 import numpy as np A = np.array(((1, 2, 3), (3, 4, 5))) print(A) A = np.array(((1.1, 2, 3), (3, 4, 5))) # Array of floats print(A) A = np.array(((1, 2, 3), (3, 4, 5)), dtype = complex) # Array of complex numbers print(A) 

Kun suoritat ohjelmaa, tulos on:

 ((1 2 3) (3 4 5)) ((1.1 2. 3.) (3. 4. 5.)) ((1. + 0.j 2. + 0.j 3. + 0.j) (3. + 0.j 4. + 0.j 5. + 0.j)) 

2. Nollien ja ykkösten taulukko

 import numpy as np zeors_array = np.zeros( (2, 3) ) print(zeors_array) ''' Output: ((0. 0. 0.) (0. 0. 0.)) ''' ones_array = np.ones( (1, 5), dtype=np.int32 ) // specifying dtype print(ones_array) # Output: ((1 1 1 1 1)) 

Tässä olemme määrittäneet dtype32 bittiä (4 tavua). Siten tämä jono voi saada arvoja välillä ja .-2-312-31-1

3. Käyttämällä apanaa () ja muotoa ()

 import numpy as np A = np.arange(4) print('A =', A) B = np.arange(12).reshape(2, 6) print('B =', B) ''' Output: A = (0 1 2 3) B = (( 0 1 2 3 4 5) ( 6 7 8 9 10 11)) ''' 

Lisätietoja muista tavoista luoda NumPy-taulukko.

Matriisitoiminnot

Edellä esitimme sinulle 3 esimerkkiä: kahden matriisin lisääminen, kahden matriisin kertominen ja matriisin siirtäminen. Käytimme sisäkkäisiä luetteloita aiemmin näiden ohjelmien kirjoittamiseen. Katsotaanpa, kuinka voimme tehdä saman tehtävän käyttämällä NumPy-taulukkoa.

Kahden matriisin lisääminen

Käytämme +operaattori lisää vastaavat elementit kahdesta NumPy matriiseja.

 import numpy as np A = np.array(((2, 4), (5, -6))) B = np.array(((9, -3), (3, 6))) C = A + B # element wise addition print(C) ''' Output: ((11 1) ( 8 0)) '''

Kahden matriisin kertominen

Kahden matriisin kertomiseen käytämme dot()menetelmää. Lisätietoja numpy.dot-toiminnosta.

Huomaa: * käytetään matriisikertomiseen (matriisin kertolaskuun (kahden matriisin vastaavien elementtien kertolasku).

 import numpy as np A = np.array(((3, 6, 7), (5, -3, 0))) B = np.array(((1, 1), (2, 1), (3, -3))) C = A.dot(B) print(C) ''' Output: (( 36 -12) ( -1 2)) ''' 

Transponoi matriisi

Laskemme matriisin transponoinnin numpy.transpose-sovelluksella.

 import numpy as np A = np.array(((1, 1), (2, 1), (3, -3))) print(A.transpose()) ''' Output: (( 1 2 3) ( 1 1 -3)) ''' 

Kuten näette, NumPy helpotti tehtäväämme paljon.

Käytä matriisielementtejä, rivejä ja sarakkeita

Access matrix elements

Similar like lists, we can access matrix elements using index. Let's start with a one-dimensional NumPy array.

 import numpy as np A = np.array((2, 4, 6, 8, 10)) print("A(0) =", A(0)) # First element print("A(2) =", A(2)) # Third element print("A(-1) =", A(-1)) # Last element 

When you run the program, the output will be:

 A(0) = 2 A(2) = 6 A(-1) = 10 

Now, let's see how we can access elements of a two-dimensional array (which is basically a matrix).

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) # First element of first row print("A(0)(0) =", A(0)(0)) # Third element of second row print("A(1)(2) =", A(1)(2)) # Last element of last row print("A(-1)(-1) =", A(-1)(-1)) 

When we run the program, the output will be:

 A(0)(0) = 1 A(1)(2) = 9 A(-1)(-1) = 19 

Access rows of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(0) =", A(0)) # First Row print("A(2) =", A(2)) # Third Row print("A(-1) =", A(-1)) # Last Row (3rd row in this case)

When we run the program, the output will be:

 A(0) = (1, 4, 5, 12) A(2) = (-6, 7, 11, 19) A(-1) = (-6, 7, 11, 19) 

Access columns of a Matrix

 import numpy as np A = np.array(((1, 4, 5, 12), (-5, 8, 9, 0), (-6, 7, 11, 19))) print("A(:,0) =",A(:,0)) # First Column print("A(:,3) =", A(:,3)) # Fourth Column print("A(:,-1) =", A(:,-1)) # Last Column (4th column in this case) 

When we run the program, the output will be:

 A(:,0) = ( 1 -5 -6) A(:,3) = (12 0 19) A(:,-1) = (12 0 19) 

If you don't know how this above code works, read slicing of a matrix section of this article.

Slicing of a Matrix

Slicing of a one-dimensional NumPy array is similar to a list. If you don't know how slicing for a list works, visit Understanding Python's slice notation.

Otetaan esimerkki:

 import numpy as np letters = np.array((1, 3, 5, 7, 9, 7, 5)) # 3rd to 5th elements print(letters(2:5)) # Output: (5, 7, 9) # 1st to 4th elements print(letters(:-5)) # Output: (1, 3) # 6th to last elements print(letters(5:)) # Output:(7, 5) # 1st to last elements print(letters(:)) # Output:(1, 3, 5, 7, 9, 7, 5) # reversing a list print(letters(::-1)) # Output:(5, 7, 9, 7, 5, 3, 1) 

Katsotaan nyt, kuinka voimme leikata matriisin.

 import numpy as np A = np.array(((1, 4, 5, 12, 14), (-5, 8, 9, 0, 17), (-6, 7, 11, 19, 21))) print(A(:2, :4)) # two rows, four columns ''' Output: (( 1 4 5 12) (-5 8 9 0)) ''' print(A(:1,)) # first row, all columns ''' Output: (( 1 4 5 12 14)) ''' print(A(:,2)) # all rows, second column ''' Output: ( 5 9 11) ''' print(A(:, 2:5)) # all rows, third to the fifth column '''Output: (( 5 12 14) ( 9 0 17) (11 19 21)) ''' 

Kuten näette, NumPyn käyttö (sisäkkäisten luetteloiden sijaan) helpottaa matriisien käyttöä, emmekä ole edes naarmuttaneet perusasioita. Suosittelemme, että tutkit NumPy-pakettia yksityiskohtaisesti, varsinkin jos yrität käyttää Pythonia datatieteeseen / analytiikkaan.

NumPy-resurssit, joista saatat löytää hyödyllisiä:

  • NumPy-opetusohjelma
  • NumPy-viite

Mielenkiintoisia artikkeleita...