Bu dersimizde Python matrislerini öğreneceğiz. Python'da bir matris nesnesi, çok boyutlu oldukları için iç içe geçmiş listelere benzer. Numpy dizilerini kullanarak nasıl matris oluşturulacağını göreceğiz. Bunu takiben daha iyi anlaşılması için çeşitli matris işlemleri yöntemlerini ve örneklerini göreceğiz.
Python'da Matrix nedir?
Python'daki bir matris dikdörtgen bir Numpy dizisidir. Bu dizinin iki boyutlu olması gerekir. Dizinin satır ve sütunlarında saklanan verileri içerir. Bir Python matrisinde yatay öğe serilerine 'satırlar', dikey öğe serilerine ise 'sütunlar' adı verilir. Satır ve sütunlar iç içe geçmiş bir liste gibi üst üste dizilir. Bir matris r sayıda satır ve c sayıda sütun içeriyorsa (r ve c pozitif tam sayılardır), o zaman r x c bu matris nesnesinin sırasını belirler.
Dizeleri, tam sayıları ve diğer veri türlerindeki nesneleri bir matriste saklayabiliriz. Veriler bir matristeki satır ve sütun yığınlarında depolanır. Matris, matematik ve fen bilimlerindeki hesaplamalar için çok önemli bir veri yapısıdır. Python'da, bir liste listesini veya iç içe geçmiş bir listeyi matris olarak kabul ederiz, çünkü Python bir matris nesnesi için herhangi bir yerleşik tür içermez.
Bu ders boyunca aşağıdaki matris işlem yöntemleri listesini inceleyeceğiz.
- Matris ekleme
- Matris çarpımı
- Matris çarpma operatörü
- Numpy olmadan matris çarpımı
- Matris tersi
- Matris devrik
- Diziye matris
Python'da Matrisler nasıl çalışır?
Bir matris oluşturmak için verileri iki boyutlu bir diziye yazıyoruz. Aşağıdaki şekilde yapılır:
Örnek
[ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ]
3 satır ve 5 sütundan oluşan bir matris görüntüler, yani boyutu 3×5'tir. Tamsayı veri türü nesneleri bu matristeki verileri oluşturur. İlk satır olan Satır1'de (2, 3, 5, 7, 6), Satır2'de (3, 2, 6, 7, 2) ve Satır3'te 5, 7, 2, 6, 1 değerleri bulunur. sütunlar, Sütun1'in değerleri (2, 3, 5), Sütun2'nin değerleri (3, 2, 7) vardır ve bu böyle devam eder.
Örnek
[ 0, 0, 1 0, 1, 0 1, 0, 0 ]
3 satır ve 3 sütundan oluşan bir matris görüntüler, dolayısıyla boyutu 3×3 olur. Satır ve sütunları eşit olan bu tür matrislere kare matrisler denir.
Benzer şekilde Python, kullanıcıların verilerini m x n boyutlu bir matris içinde saklamasına olanak tanır. Matris benzeri bir yapı üzerinde matris toplama, çarpma, aktarma ve diğer işlemleri gerçekleştirebiliyoruz.
Python'da bir matris nesnesinin uygulanması basit değildir. Dizileri kullanarak bir Python matrisi oluşturabilir ve benzer şekilde kullanabiliriz.
NumPy Dizisi
Bilimsel hesaplama yazılımı NumPy, sağlam bir N boyutlu dizi nesnesini destekler. NumPy'yi yüklemek, onu programımızda kullanmanın bir ön koşuludur.
NumPy kurulumdan sonra kullanılabilir ve içe aktarılabilir. Numpy Array'in temellerini bilmek matrisleri anlamada yardımcı olacaktır.
Birden çok öğe boyutuna sahip diziler NumPy tarafından sağlanır. İşte bir örnek:
Kod
# Python program to show how to create a Numpy array # Importing numpy import numpy as np # Creating a numpy array array = np.array([4, 6, 'Harry']) print(array) print('Data type of array object: ', type(array))
Çıktı:
['4' '6' 'Harry'] Data type of array object:
Görüldüğü gibi Numpy dizileri ndarray sınıfına aittir.
Numpy Array Kullanarak Matris Oluşturma Örneği
Öğrencilerin notlarının kaydını oluşturduğumuz senaryoyu düşünün. Öğrencinin adını ve notlarını Python programlama ve Matrix olmak üzere iki konuda kaydedeceğiz. Numpy dizisini kullanarak iki boyutlu bir matris oluşturacağız ve onu yeniden şekillendireceğiz.
Kod
np.sıfırlar
# Python program to create a matrix using numpy array # Importing numpy import numpy as np # Creating the matrix record = np.array( [['Itika', 89, 91], ['Aditi', 96, 82], ['Harry', 91, 81], ['Andrew', 87, 91], ['Peter', 72, 79]]) matrix = np.reshape(record, (5,3)) print('The matrix is: ', matrix)
Çıktı:
The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']]
Numpy Matrix Yöntemini Kullanarak Matris Oluşturma Örneği
2D matris oluşturmak için numpy.matrix'i kullanabiliriz.
Kod
# Python program to show how to create a matrix using the matrix method # importing numpy import numpy as np # Creating a matrix matrix = np.matrix('3,4;5,6') print(matrix)
Çıktı:
[[3 4] [5 6]]
Bir Matrisin Değerlerine Erişim
Bir matrisin indeksleri, içinde saklanan öğelere erişmek için kullanılabilir. Bir matriste depolanan verilere, iki boyutlu bir dizi için kullandığımız yaklaşımın aynısı kullanılarak erişilebilir.
Kod
# Python program to access elements of a matrix # Importing numpy import numpy as np # Creating the matrix record = np.array( [['Itika', 89, 91], ['Aditi', 96, 82], ['Harry', 91, 81], ['Andrew', 87, 91], ['Peter', 72, 79]]) matrix = np.reshape(record, (5,3)) # Accessing record of Itika print( matrix[0] ) # Accessing marks in the matrix subject of Andrew print( 'Andrew's marks in Matrix subject: ', matrix[3][2] )
Çıktı:
['Itika' '89' '91'] Andrew's marks in Matrix subject: 91
2 Boyutlu Numpy Dizisi veya Matris Oluşturma Yöntemleri
İki boyutlu bir NumPy dizisi ve dolayısıyla bir matris oluşturmanın birkaç yöntemi vardır. Satır ve sütunlara giriş sağlanması
Tamsayılar, kayan sayılar ve hatta karmaşık sayılar sağlayabiliriz. Dizi yönteminin dtype özelliğini kullanarak istediğimiz veri tipini belirtebiliriz.
Kod
# Python program to show how to create a Numpy array # Importing numpy import numpy as np # Creating numpy arrays array1 = np.array([[4, 2, 7, 3], [2, 8, 5, 2]]) print('Array of data type integers: ', array1) array2 = np.array([[1.5, 2.2, 3.1], [3, 4.4, 2]], dtype = 'float') print('Array of data type float: ', array2) array3 = np.array([[5, 3, 6], [2, 5, 7]], dtype = 'complex') print('Array of data type complex numbers: ', array3)
Çıktı:
Array of data type integers: [[4 2 7 3] [2 8 5 2]] Array of data type float: [[1.5 2.2 3.1] [3. 4.4 2. ]] Array of data type complex numbers: [[5.+0.j 3.+0.j 6.+0.j] [2.+0.j 5.+0.j 7.+0.j]]
Sıfırlar ve Birler içeren dizi
Kod
# Python program to show how to create a Numpy array having zeroes and ones # Importing numpy import numpy as np # Creating numpy arrays zeores_array = np.zeros( (3, 2) ) print(zeores_array) ones_array = np.ones( (2, 4), dtype=np.int64 ) print(ones_array)
Çıktı:
[[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]]
Burada dtype'ı 64 bit olarak belirledik.
arange() ve Shape() Yöntemlerini Kullanmak
Kod
# Python program to show how to create Numpy array using arrange() and shape() methods # Importing numpy import numpy as np # Creating numpy arrays array1 = np.arange( 5 ) print(array1) array2 = np.arange( 6 ).reshape( 2, 3 ) print(array2)
Çıktı:
[0 1 2 3 4] [[0 1 2] [3 4 5]]
Python Matris İşlemleri
Python Matris Ekleme
İki matrisi toplayacağız ve verilen matrisler boyunca iç içe geçmiş for döngüsünü kullanacağız.
Kod
# Python program to add two matrices without using numpy # Creating matrices in the form of nested lists matrix1 = [[23, 43, 12], [43, 13, 55], [23, 12, 13]] matrix2 = [[4, 2, -1], [5, 4, -34], [0, -4, 3]] matrix3 = [[0,1,0], [1,0,0], [0,0,1]] matrix4 = [[0,0,0], [0,0,0], [0,0,0]] matrices_length = len(matrix1) #Adding the three matrices using nested loops for row in range(len(matrix1)): for column in range(len(matrix2[0])): matrix4[row][column] = matrix1[row][column] + matrix2[row][column] + matrix3[row][column] #Printing the final matrix print('The sum of the matrices is = ', matrix4)
Çıktı:
The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]]
Python Matris Çarpımı
Python Matris Çarpma Operatörü
Python'da @, çarpma operatörü olarak bilinir. İki matrisi çarpmak için bu operatörü kullanacağımız bir örneği görelim.
Kod
# Python program to show how to create a matrix using the matrix method. # importing numpy import numpy as np # Creating the matrices matrix1 = np.matrix('3,4;5,6') matrix2 = np.matrix('4,6;8,2') # Usng multiplication operator to multiply two matrices print(matrix1 @ matrix2)
Çıktı:
java'da hashset nedir
[[44 26] [68 42]]
Numpy kullanmadan Python Matris Çarpımı
İki matrisi çarpmanın başka bir yolu da iç içe döngüler kullanmaktır. İşte gösterilecek bir örnek.
Kod
# Python program to show how to create a matrix using the matrix method # importing numpy import numpy as np # Creating two matrices matrix1 = [[4, 6, 2], [7, 4, 8], [6, 2, 7]] matrix2 = [[4, 6, 8, 2], [6, 5, 3, 7], [7, 3, 7, 6]] # Result will be a 3x4 matrix output = [[0,0,0,0], [0,0,0,0], [0,0,0,0]] # Iterating through the rows of matrix1 for i in range(len(matrix1)): # iterating through the columns of matrix2 for j in range(len(matrix2[0])): # iterating through the rows of matrix2 for k in range(len(matrix2)): output[i][j] += matrix1[i][k] * matrix2[k][j] for row in output: print(row)
Çıktı:
[66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68]
Python Matris Tersi
Denklemleri sağlayan bilinmeyen bir değişkenin değerini elde etmek için bir denklemin çözülmesi gerektiğinde, normal matematikte yaptığımız gibi matrisin tersi olan bir matrisin tersi hesaplanır. Bir matrisin tersi, orijinal matrisle çarptığımızda birim matrisi veren matristir. Yalnızca tekil olmayan bir matrisin tersi olabilir. Tekil olmayan bir matrisin sıfır olmayan bir determinantı vardır.
Kod
# Python program to show how to calculate the inverse of a matrix # Importing the required library import numpy as np # Creating a matrix A = np.matrix('3, 4, 6; 6, 2, 7; 6, 4, 6') # Calculating the inverse of A print(np.linalg.inv(A))
Çıktı:
[[-3.33333333e-01 -7.40148683e-17 3.33333333e-01] [ 1.25000000e-01 -3.75000000e-01 3.12500000e-01] [ 2.50000000e-01 2.50000000e-01 -3.75000000e-01]]
Python Matris Devriği
Numpy olmadan Python Matris Transpozisyon
Bir matrisin aktarımı satır ve sütunların değiştirilmesini içerir. X' sembolüne sahiptir. Nesneyi X matrisinin j satırı ve j sütununa, X' matrisinin j satırına ve i sütununa koyacağız. Sonuç olarak, eğer orijinal X matrisi 3x4'lük bir matris ise, X' 4x3'lük bir matris haline gelecektir.
Kod
# Python program to find the transpose of a matrix using nested loops # Creating a matrix matrix = [[4, 6, 7, 8], [3, 7, 2, 7], [7, 3, 7, 5]] result = [[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]] # iterating through the rows for i in range(len(matrix)): # iterating through the columns for j in range(len(matrix[0])): result[j][i] = matrix[i][j] for row in result: print(row)
Çıktı:
[4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5]
Numpy kullanarak Python Matris Transpoze Etme
Matrisin devrini elde etmek için Numpy'de matris.transpose() yöntemini kullanabiliriz.
Kod
# Python program to find the transpose of a matrix # importing the required module import numpy as np # Creating a matrix using matrix method matrix = np.matrix('[5, 7, 6; 4, 2, 4]') #finding transpose using matrix.transpose method transpose = matrix.transpose() print(transpose)
Çıktı:
[[5 4] [7 2] [6 4]]
Python Matrisini Diziye Dönüştürme
Bir Python matrisini Python dizisine dönüştürmek için ravel ve düzleştirme fonksiyonlarını kullanabiliriz.
Kod
# Python program to convert a matrix to an array # importing the required module import numpy as np # Creating a matrix using numpy matrix = np.matrix('[4, 6, 7; 5, 2, 6; 6, 3, 6]') # Using ravel() function to covert matrix to array array = matrix.ravel() print(array) # Using flatten() function to covert matrix to array array = np.asarray(matrix).flatten() print(array) # Using reshape() function to covert matrix to array array = (np.asarray(matrix)).reshape(-1) print(array)
Çıktı:
[[4 6 7 5 2 6 6 3 6]] [4 6 7 5 2 6 6 3 6] [4 6 7 5 2 6 6 3 6]