Python Matrix ve NumPy'ye Giriş

Bu yazıda, iç içe geçmiş listeleri ve NumPy paketini kullanan Python matrislerini öğreneceğiz.

Matris, sayıların satırlar ve sütunlar halinde düzenlendiği iki boyutlu bir veri yapısıdır. Örneğin:

Bu matris 3x4 ("üçe dört" olarak okunur) bir matristir çünkü 3 satır ve 4 sütuna sahiptir.

Python Matrisi

Python, matrisler için yerleşik bir türe sahip değildir. Bununla birlikte, bir listenin listesini bir matris olarak ele alabiliriz. Örneğin:

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

Bu liste listesini 2 satırlı ve 3 sütunlu bir matris olarak ele alabiliriz.

Bu makaleye devam etmeden önce Python listeleri hakkında bilgi edindiğinizden emin olun.

İç içe geçmiş bir listeyle nasıl çalışılacağını görelim.

 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) 

Programı çalıştırdığımızda çıktı şöyle olacaktır:

 Bir = ((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. sütun = (5, 9, 11) 

İç içe geçmiş listeleri kullanan Python matrisleriyle ilgili birkaç örnek daha.

  • İki matris ekleyin
  • Bir Matrisi Transpoze Et
  • İki matrisi çarpın

İç içe geçmiş listeleri matris olarak kullanmak basit hesaplama görevleri için işe yarar, ancak NumPy paketini kullanarak Python'da matrislerle çalışmanın daha iyi bir yolu vardır.

NumPy Dizisi

NumPy, güçlü bir N boyutlu dizi nesnesini destekleyen bilimsel hesaplama için bir pakettir. NumPy'yi kullanmadan önce onu kurmanız gerekir. Daha fazla bilgi için,

  • Ziyaret: NumPy nasıl kurulur?
  • Windows kullanıyorsanız, Python'un anaconda dağıtımını indirin ve kurun. NumPy ve veri bilimi ve makine öğrenimi ile ilgili diğer çeşitli paketlerle birlikte gelir.

NumPy kurulduktan sonra, onu içe aktarabilir ve kullanabilirsiniz.

NumPy, çok boyutlu sayı dizisi sağlar (bu aslında bir nesnedir). Bir örnek alalım:

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

Gördüğünüz gibi NumPy'nin dizi sınıfı çağrılıyor ndarray.

NumPy dizisi nasıl oluşturulur?

NumPy dizileri oluşturmanın birkaç yolu vardır.

1. Tam sayılar, yüzer sayılar ve karmaşık Sayılar dizisi

 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) 

Programı çalıştırdığınızda, çıktı:

 ((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. Sıfırlar ve birler dizisi

 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)) 

Burada dtype32 bit (4 bayt) belirledik . Bu nedenle, bu dizi 'den' e kadar değer alabilir .-2-312-31-1

3. arange () ve shape () kullanma

 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)) ''' 

NumPy dizisi oluşturmanın diğer yolları hakkında daha fazla bilgi edinin.

Matris İşlemleri

Yukarıda size 3 örnek verdik: iki matrisin toplanması, iki matrisin çarpımı ve bir matrisin transpoze edilmesi. Bu programları yazmadan önce iç içe geçmiş listeler kullandık. NumPy dizisini kullanarak aynı görevi nasıl yapabileceğimizi görelim.

İki Matrisin Eklenmesi

+İki NumPy matrisinin karşılık gelen elemanlarını eklemek için operatörü kullanırız .

 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)) '''

İki Matrisin Çarpımı

İki matrisi çarpmak için dot()yöntemi kullanırız . Numpy.dot'un nasıl çalıştığı hakkında daha fazla bilgi edinin.

Not: * matris çarpımı için değil, dizi çarpımı (iki dizinin karşılık gelen öğelerinin çarpımı) için kullanılır.

 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)) ''' 

Bir Matrisin Transpoze Edilmesi

Bir matrisin devrikini hesaplamak için numpy.transpose kullanıyoruz.

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

Gördüğünüz gibi NumPy görevimizi çok daha kolaylaştırdı.

Matris öğelerine, satırlara ve sütunlara erişin

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.

Bir örnek alalım:

 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) 

Şimdi, bir matrisi nasıl dilimleyebileceğimize bakalım.

 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)) ''' 

Gördüğünüz gibi, NumPy'yi kullanmak (iç içe geçmiş listeler yerine) matrislerle çalışmayı çok daha kolay hale getiriyor ve biz de temel bilgileri çizmedik. Özellikle veri bilimi / analitiği için Python kullanmaya çalışıyorsanız NumPy paketini ayrıntılı olarak incelemenizi öneririz.

Yararlı bulabileceğiniz NumPy Kaynakları:

  • NumPy Eğitimi
  • NumPy Referansı

Ilginç makaleler...