Site Loader

Merhaba Arkadaşlar, NumPy Dersleri Serisinin ikinci yazısı NumPy ile Matris ile birlikteyiz bir önceki derste NumPy ‘ın ne olduğunu ve temel işlemlerin nasıl yapıldığını burada görmüştük. Bu derste ise Lineer Cebir konusu olan NumPy ile Matrisler  konusunu ele alacağız. Keyifli okumalar.

Lineer  Cebir Nedir?

Lineer Cebir ; matematiğin, vektör, vektör uzayları, doğrusal dönüşümler, doğrusal denklemler ve matrisleri inceleyen alanıdır. Biz bu yazımızda  çok boyutlu diziler yani matrisler üzerinde işlemler yapacağız. O zaman başlayalım.

NumPy ile Matrislerde Temel İşlemler

✅ Uygulama 1: NumPy Matris Oluşturmak

matrix = np.array([[1, 2],
                   [2, 3],
                   [4, 5]])

matrix 
array([[1, 2],
       [2, 3],
       [4, 5]])

 

✅ Uygulama 2: Numpy matrisin en max-min değerlerini bulma;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix.min()
1

matrix.max()
5

Gördüğünüz gibi matris oluşturmak dizi oluşturmaktan pekte bir farkı yok. Aslında biz iki boyutlu bir dizi oluşturduk. Şimdi bu matris üzerinde matematiksel işlemler yapalım.

 

✅ Uygulama 3: Numpy matrisin eleman sayısını bulma;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix.size
6

 

✅ Uygulama 4: Numpy matrisin şekline bakalım kaça kaçlık bir matris;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix.shape
(3,2)

Matrisimiz 3 satır ve 2 sütundan oluşuyor.

 

✅ Uygulama 5: Numpy matrisin boyut sayısı bakalım;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix.ndim
2

Oluşturmuş olduğumuz matris 2 boyutlu bir matris. Boyut dediği şey aslında satır ve sütunlar.

 

✅ Uygulama 6: Numpy matrisin ortalamasını bulalım;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix.mean()
2.8333333333333335

 

✅ Uygulama 7: Numpy matrisin varyans hesaplama;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix.var()
1.8055555555555554

 

✅ Uygulama 8: Numpy matrisin standart sapma hesaplama;

matrix = np.array([[1, 2],
                   [2, 3],
                   [4, 5]])

matrix.std()
1.3437096247164249

 

NumPy ile Matris Elemanlarına Ulaşma

 

✅ Uygulama 9: Numpy matrisin 3 olan elemanına ulaşalım ;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix[1][1]
3

Arkadaşlar siz şimdi diyeceksiniz ki neden (1,1) aldınız bizim aradığımız elaman ikinci satır ve ikinci sütunda olduğu için (2,2) olmalı. Böyle düşünmekte haklısınız ama genel olarak programlama dillerinde indexler sıfırdan başlar. Umarım sağdaki resim daha iyi anlamanızı sağlayacaktır.

 

 

 

 

✅ Uygulama 10: Numpy matrisin ikinci satır tüm elemanlarına ulaşalım ;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix[1,:]
array([2, 3])

 

✅ Uygulama 11: Numpy matrisin birinci sütun tüm elemanlarına ulaşalım ;

array([[1, 2],
       [2, 3],
       [4, 5]])

matrix[:,0]
array([1, 2, 4])

 

NumPy ile Matrislerde Matematiksel İşlemler

✅ Uygulama 12: Numpy iki matrisin toplanması;

matrix_1 = np.array([[1, 7, 1],
                     [1, 4, 1],
                     [3, 1, 2]])


matrix_2 = np.array([[2, 3, 5],
                     [1, 9, 1],
                     [2, 3, 1]])



np.add(matrix_1, matrix_2)
array([[ 3, 10,  6],
       [ 2, 13,  2],
       [ 5,  4,  3]])

Toplama işlemi ilk matrisin  birinci satır birinci sütun elemanı ile ikinci matrisin birinci satır ikinci sütun elemanı olacak şekilde tek tek toplanır. Şimdi aklınıza gelen soru şu peki ya iki sütunun satır ve sütun sayısı eşit değilse örneğin (3,2) ile (3,3) olan iki matrisi toplayalım.

matrix_1 = np.array([[1, 7],
                     [1, 4],
                     [3, 1]])


matrix_2 = np.array([[2, 3, 5],
                     [1, 9, 1],
                     [2, 3, 1]])


np.add(matrix_1, matrix_2)

Sonuç olarak şu çıktıyı alacaksınız.

ValueError: operands could not be broadcast together with shapes (3,2) (3,3)

Yani siz eleman sayısı eşit olmayan iki matrisi  birbirine toplayıp çıkaramazsınız ve bölemezsiniz. Çarp işlemi için bu biraz daha farklı.

✅ Uygulama 13: Numpy iki matrisin çıkarma;

matrix_1 = np.array([[1, 7, 1],
                     [1, 4, 1],
                     [3, 1, 2]])


matrix_2 = np.array([[2, 3, 5],
                     [1, 9, 1],
                     [2, 3, 1]])



np.subtract(matrix_1, matrix_2)
array([[-1,  4, -4],
       [ 0, -5,  0],
       [ 1, -2,  1]])

İsterseniz bu işlemleri fonksiyon kullanmadan da yapabilirsiniz.

matrix_1 - matrix_2
array([[-1,  4, -4],
       [ 0, -5,  0],
       [ 1, -2,  1]])

 

✅ Uygulama 14: Numpy iki matrisi birbiriyle çarpmak;

matrix_1 = np.array([[1, 7],
                     [1, 4]])


matrix_2 = np.array([[2, 3],
                     [1, 9]])



np.dot(matrix_1, matrix_2)
array([[ 9, 66],
       [ 6, 39]])

 

✅ Uygulama 15: Numpy (3,2) matris ile (2,3) iki matrisi birbiriyle çarpma;

matrix_1 = np.array([[1, 7],
                     [1, 4],
                     [3, 1]])


matrix_2 = np.array([[2, 3, 5],
                     [1, 9, 7]])


np.dot(matrix_1, matrix_2)
array([[ 9, 66, 54],
       [ 6, 39, 33],
       [ 7, 18, 22]])

Burada ki temel kural şu birinci matrisin satır sayısı ile ikinci matrisin sütun sayısının eşit olması.

NumPy ile Matrisin Tersini Hesaplama

✅ Uygulama 16: Numpy matrisin tersini hesaplama;

matrix = np.array([[3, 2],
                   [1, 4]])


np.linalg.inv(matrix)
array([[ 0.4, -0.2],
       [-0.1,  0.3]])

 

NumPy ile Matrislerde Skaler Çarpım

Matrislerle işlem yaparken, gerçek sayıları skaler olarak adlandırırız.
Skaler çarpım terimi, bir gerçek sayıyla bir matrisin çarpımını belirtir. Skaler çarpımda, matristeki her eleman skaler ile çarpılır.

✅ Uygulama 17: Numpy matrisin skaler çarpımını hesaplama;

matrix = np.array([[3, 2],
                   [1, 4]])

matrix*2
array([[6, 4],
       [2, 8]])

NumPy Matris Determinant Hesaplama

Determinant, kare matrislerden hesaplanan özel bir sayıdır. Determinant bir matrisin tersini (inverse) bulmak ve aynı zamanda doğrusal eşitlikleri çözmek için kullanılır.

✅ Uygulama 18: Numpy matrisin determinant’ını hesaplama;

array([[3, 2],
       [1, 4]])

np.linalg.det(matrix)
10.000000000000002

 

NumPy Matris İzini Hesaplama

Matris izi, asal köşegen üzerindeki tüm elemanların toplamıdır.

✅ Uygulama 19: Numpy matrisin izini hesaplama;

array([[2, 3, 5],
       [1, 9, 7],
       [1, 9, 7]])

matrix.trace()
18

NumPy Transpoz Hesaplama

✅ Uygulama 20: Numpy matrisin  transpozunu hesaplama;

array([[2, 3, 5],
       [1, 9, 7],
       [1, 9, 7]])

matrix.transpose()
array([[2, 1, 1],
       [3, 9, 9],
       [5, 7, 7]])

NumPy ile Bir Matrisin Rankını Hesaplama

✅ Uygulama 21: Numpy matris rankını hesaplama;

from numpy.linalg import matrix_rank
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])

matrix_rank(matrix)
2

Bir  A matrisinin, determinantı sıfırdan farklı en büyük alt kare matrisinin mertebesine o A matrisinin rankı denir

NumPy Özel Matrisler

✅ Uygulama 22: Numpy Sıfır matrisini oluşturmak;

np.zeros([3,3])

array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])

Sıfır matrisi, girişlerin tümü ‘0’ olan bir matristir.

 

✅ Uygulama 23: Numpy Birim Matris oluşturmak;

np.identity(3)

array([[1., 0., 0.],
       [0., 1., 0.],
       [0., 0., 1.]])

Birim matris, köşegeni 1 ve geri kalan sayıları 0 olan karesel matristir.

 

✅ Uygulama 24: Numpy Köşegen Matris oluşturmak;

array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11]])


np.diag(np.diag(matrix))
array([[0, 0, 0],
       [0, 4, 0],
       [0, 0, 8]])

Köşegen üzerindeki elemanlarının dışında, diğer tüm elemanları sıfır olan matrise denir. Köşegen elemanlarının bazıları sıfır olabilir.
NOT: Sadece kare matrisler köşegen matris
olabilir.

pythonearth.com da NumPy Dersleri Serisinde NumPy ile Matrisler  konusunun sonuna geldik. Eksik veya yanlış gördüğünüz yerler için lütfen iletişime geçin. Bir sonraki yazıda görüşmek dileği ile 🙂

Post Author: Cahit ISLEYEN

Data Scientist at @embedica.ai

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir