logo

Matryca Pythona

W tym samouczku poznamy macierze Pythona. W Pythonie obiekt matrix jest podobny do list zagnieżdżonych, ponieważ jest wielowymiarowy. Zobaczymy, jak utworzyć macierz za pomocą tablic Numpy. Następnie zobaczymy różne metody operacji na macierzach i przykłady dla lepszego zrozumienia.

Co to jest macierz w Pythonie?

Macierz w Pythonie to prostokątna tablica Numpy. Tablica ta musi być dwuwymiarowa. Zawiera dane przechowywane w wierszach i kolumnach tablicy. W macierzy Pythona poziome serie elementów nazywane są „wierszami”, natomiast pionowe serie elementów nazywane są „kolumnami”. Wiersze i kolumny są ułożone jeden na drugim, podobnie jak lista zagnieżdżona. Jeżeli macierz zawiera r wierszy i c liczbę kolumn, gdzie r i c są dodatnimi liczbami całkowitymi, to r x c określa porządek tego obiektu macierzy.

W macierzy możemy przechowywać ciągi znaków, liczby całkowite i obiekty innych typów danych. Dane są przechowywane w stosach wierszy i kolumn macierzy. Macierz jest kluczową strukturą danych do obliczeń w matematyce i naukach ścisłych. W Pythonie listę list lub listę zagnieżdżoną traktujemy jako macierz, ponieważ Python nie zawiera żadnego wbudowanego typu obiektu matrix.

W trakcie tego samouczka omówimy poniższą listę metod działania matrycy.

  • Dodawanie macierzy
  • Mnożenie macierzy
  • Operator mnożenia macierzy
  • Mnożenie macierzy bez Numpy
  • Odwrotność macierzy
  • Transpozycja macierzy
  • Macierz do tablicy

Jak działają macierze w Pythonie?

Zapisujemy dane w tablicy dwuwymiarowej, aby utworzyć macierz. Odbywa się to w następujący sposób:

Przykład

 [ 2 3 5 7 6 3 2 6 7 2 5 7 2 6 1 ] 

Wyświetla macierz składającą się z 3 wierszy i 5 kolumn, więc jej wymiar wynosi 3×5. Obiekty typu Integer tworzą dane w tej macierzy. Wiersz 1, pierwszy wiersz, ma wartości (2, 3, 5, 7, 6), podczas gdy Wiersz 2 ma wartości (3, 2, 6, 7, 2), a Wiersz 3 ma wartości 5, 7, 2, 6, 1. Odnośnie kolumny, Kolumna 1 zawiera wartości (2, 3, 5), Kolumna 2 zawiera wartości (3, 2, 7) i tak dalej.

Przykład

 [ 0, 0, 1 0, 1, 0 1, 0, 0 ] 

Wyświetla macierz składającą się z 3 wierszy i 3 kolumn, więc jej wymiar wynosi 3×3. Takie macierze mające równe wiersze i kolumny nazywane są macierzami kwadratowymi.

Podobnie Python umożliwia użytkownikom przechowywanie danych w matrycy wymiarowej m x n. Na strukturze macierzowej możemy wykonywać dodawanie, mnożenie, transpozycję i inne operacje.

Implementacja obiektu matrix w Pythonie nie jest prosta. Możemy stworzyć macierz Pythona, używając tablic i podobnie ich używać.

Tablica NumPy

Naukowe oprogramowanie obliczeniowe NumPy obsługuje solidny N-wymiarowy obiekt tablicowy. Zainstalowanie NumPy jest warunkiem korzystania z niego w naszym programie.

NumPy można używać i importować po instalacji. Znajomość podstaw Numpy Array będzie pomocna w zrozumieniu macierzy.

Tablice posiadające wiele wymiarów elementów są dostarczane przez NumPy. Oto ilustracja:

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

Wyjście:

 ['4' '6' 'Harry'] Data type of array object: 

Jak widzimy, tablice Numpy należą do klasy ndarray.

Przykład tworzenia macierzy przy użyciu tablicy Numpy

Pomyśl o scenariuszu, w którym tworzymy rejestr ocen uczniów. Będziemy rejestrować imię i nazwisko ucznia oraz oceny z dwóch przedmiotów: programowania w Pythonie i Matrix. Stworzymy dwuwymiarową macierz za pomocą tablicy numpy, a następnie zmienimy jej kształt.

Kod

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

Wyjście:

 The matrix is: [['Itika' '89' '91'] ['Aditi' '96' '82'] ['Harry' '91' '81'] ['Andrew' '87' '91'] ['Peter' '72' '79']] 

Przykład tworzenia macierzy przy użyciu metody Numpy Matrix

Możemy użyć numpy.matrix do utworzenia macierzy 2D.

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) 

Wyjście:

długo do napisania Java
 [[3 4] [5 6]] 

Dostęp do wartości macierzy

Indeksy macierzy umożliwiają dostęp do przechowywanych w niej elementów. Dostęp do danych przechowywanych w macierzy można uzyskać przy użyciu tego samego podejścia, którego używamy w przypadku tablicy dwuwymiarowej.

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

Wyjście:

 ['Itika' '89' '91'] Andrew's marks in Matrix subject: 91 

Metody tworzenia dwuwymiarowej tablicy lub macierzy Numpy

Istnieje kilka metod tworzenia dwuwymiarowej tablicy NumPy, a tym samym macierzy. Dostarczanie wpisów dla wierszy i kolumn

Możemy podać liczby całkowite, zmiennoprzecinkowe, a nawet liczby zespolone. Używając atrybutu dtype metody tablicowej, możemy określić żądany typ danych.

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) 

Wyjście:

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

Tablica zawierająca zera i jedynki

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) 

Wyjście:

 [[0. 0.] [0. 0.] [0. 0.]] [[1 1 1 1] [1 1 1 1]] 

Tutaj określiliśmy dtype na 64 bity.

Korzystanie z metod arange() i Shape().

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) 

Wyjście:

 [0 1 2 3 4] [[0 1 2] [3 4 5]] 

Operacje na macierzach w Pythonie

Dodatek do macierzy Pythona

Dodamy dwie macierze i wykorzystamy zagnieżdżoną pętlę for przez podane macierze.

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) 

Wyjście:

 The sum of the matrices is = [[27, 46, 11], [49, 17, 21], [23, 8, 17]] 

Mnożenie macierzy w Pythonie

Operator mnożenia macierzy w języku Python

W Pythonie @ jest znany jako operator mnożenia. Zobaczmy przykład, w którym użyjemy tego operatora do pomnożenia dwóch macierzy.

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) 

Wyjście:

 [[44 26] [68 42]] 

Mnożenie macierzy w Pythonie bez użycia Numpy

Innym sposobem mnożenia dwóch macierzy jest użycie zagnieżdżonych pętli. Oto przykład do pokazania.

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) 

Wyjście:

 [66, 60, 64, 62] [108, 86, 124, 90] [85, 67, 103, 68] 

Odwrotność macierzy Pythona

Kiedy należy rozwiązać równanie, aby uzyskać wartość nieznanej zmiennej, która spełnia równania, obliczana jest odwrotność macierzy, która jest po prostu odwrotnością macierzy, tak jak w zwykłej matematyce. Odwrotność macierzy to macierz, która daje macierz identyczności, gdy mnożymy przez macierz pierwotną. Tylko macierz nieosobliwa może mieć odwrotność. Macierz nieosobliwa ma niezerowy wyznacznik.

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

Wyjście:

 [[-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]] 

Transpozycja macierzy Pythona

Transpozycja macierzy Pythona bez Numpy

Transpozycja macierzy polega na zamianie wierszy i kolumn. Ma symbol X'. Umieścimy obiekt w wierszu i kolumnie j macierzy X w wierszu j i kolumnie i macierzy X'. W konsekwencji X' stanie się macierzą 4x3, jeśli pierwotna macierz X jest macierzą 3x4.

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) 

Wyjście:

 [4, 3, 7] [6, 7, 3] [7, 2, 7] [8, 7, 5] 

Transpozycja macierzy Pythona za pomocą Numpy

Możemy użyć metody matrix.transpose() w Numpy, aby uzyskać transpozycję macierzy.

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) 

Wyjście:

 [[5 4] [7 2] [6 4]] 

Konwersja macierzy Pythona na tablicę

Możemy użyć funkcji ravel i flatten, aby przekonwertować macierz Pythona na tablicę Pythona.

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) 

Wyjście:

 [[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]