Jak obliczyć macierze w Pythonie bez Numpy

Jak obliczyć macierze w Pythonie bez Numpy
Pionowa seria obiektów w matrycy Python jest ogólnie znana jako „kolumny”, podczas gdy pozioma seria rzeczy jest określana jako „wiersze.„Podobnie jak zagnieżdżona lista, wiersze i kolumny zostały umieszczone na sobie. Jeśli macierz ma rzędy „k” i kolumny „m”, a jeśli „k” i „m” są dodatnimi liczbami całkowitych, kolejność takiego obiektu macierzy jest określana przez „k-po-m”.

Matryca może pomieścić ciągi, liczby i inne rodzaje danych obiektów. W matrycy dane są ułożone w stosy zarówno w kolumnach, jak i rzędach. Kluczową strukturę danych obsługujących obliczenia w nauce i matematyce jest matryca. Ponieważ Python nie zapewnia wbudowanego typu dla obiektu matrycy, traktujemy albo listę między listami, a nawet zagnieżdżoną listą jako matrycę.

Jak działają macierze w Python

Dane są zapisywane w dwuwymiarowej tablicy w celu wygenerowania matrycy. Procedura jest następująca:

[[1 3 5 7 9]
[2 4 6 8 10]
[0 8 7 4]]

Ma macierz 3 na 5 jako swój wyświetlacz. Stąd jego rozmiar wynosi 3 na 5. Dane wewnątrz tej macierzy składają się z obiektów albo liczb całkowitych typu danych. Górny rząd, wiersz 1, ma wartości 1, 3, 5, 7 i 9, podczas gdy Row2, wraz z wiersz3, ma wartości (2, 4, 6, 8) i odpowiednio (0, 8, 7, 4). Kolumna 1 zawiera wartości (1, 2, 0), a także kolumna 2 ma wartości (3, 4, 8) i tak dalej.

Python umożliwia nam przechowywanie wszystkich danych w matrycy z dwoma wymiarami. Możemy dodawać macierze, mnożyć je, transponować i wykonywać inne operacje na matrycy. Korzystając z tablic, możemy zbudować macierz Python i użyć jej podobnie. Porozmawiajmy o różnych przykładach macierzy Pythona.

Dodatek macierzy Python

Weźmy dwie matryce i dodamy je do iteracji za pomocą zagnieżdżonej pętli.

macierz1 = [[2, 4, 1],
[4, 1, 5],
[3, 6, 7]]
macierz2 = [[4, 2, -1],
[5, 6, -3],
[0, -4, 3]]
macierz3 = [[0,1,0],
[1,0,0],
[0,0,1]]
macierz4 = [[0,0,1],
[0,1,0],
[1,0,0]]
Matrices_length = len (macierz1)
dla rządu w zakresie (Len (Matrix1)):
Dla kolumny w zakresie (Len (Matrix2 [0])):
macierz4 [wiersz] [kolumna] = macierz1 [wiersz] [kolumna] + matrix2 [wiersz] [kolumna] + matrix3 [wiersz] [kolumna]
druk („suma macierzy to =”, Matrix4)

Początkowo, zamiast korzystać z Numpy, zbudowaliśmy bezpośrednio trzy matryce z zamówieniem 3 na 3. Określiliśmy odpowiednio kolejność lub długość macierzy 1 jako funkcję len () i innych. Za pomocą zagnieżdżonych pętli najpierw dodano trzy matryce. W sumie z trzech macierzy określono następnie jako macierz 4 i użyliśmy funkcji print (), aby wyświetlić wyniki.

Przesyłać matrycę w Pythonie

Wymieniając elementy kolumn i wierszy macierzy, moglibyśmy je przetrwać. Korzystając z różnych przykładów, zademonstrujemy, jak uzyskać transpozycję macierzy za pomocą Pythona bez Numpy.

Transpozycja matrycy jest reprezentowana przez symbol. Załóżmy na przykład, że mamy matrycę „A” o kolejności:

3 na-2

Wówczas transpozycja A jest:

Matryca 2 na 3

Obliczanie transpozycji matrycy za pomocą zagnieżdżonej pętli

Pętla zagnieżdżona może być używana do wielokrotnego iterowania przez kolumny i rzędów nawet zagnieżdżonej listy. Włóż element w wierszu „ITH” i kolumnie „jth” macierzy f obok wiersza „jth” i kolumnie „iTh” macierzy „f^t”, aby uzyskać transpozycję macierzy. „F^t” będzie matrycą 2 na 3, zakładając, że „F” to matryca 3 na 2.

F = [[2, 3],
[5, 7],
[8, 1]]
F_t = [[0, 0, 0],
[0, 0, 0]]
dla Q w zakresie (Len (f)):
dla w w zakresie (Len (f [0])):
F_t [w] [q] = f [q] [w]
Dla Q w f_t:
Drukuj (Q)

Najpierw utworzono macierz transponowania oryginalnej macierzy i macierz „F” z zamówieniem 3 na 2. Poprzedni program używa zagnieżdżonych pętli „do”, nieustannie iterowany przez każdy wiersz, a następnie każdą kolumnę. Przy każdej iteracji dodajemy element z „f [q] [w]” do „ft [w] [q]”. Na koniec wykonujemy metodę PRINT (), aby przedstawić transponię.

Korzystanie ze zrozumienia zagnieżdżonej listy w celu znalezienia transpozycji macierzy

Lista zagnieżdżona jest tworzona, gdy rozumienie listy jest wykonywane w innym rozumieniu listy. Poniżej znajduje się składnia do zrozumienia zagnieżdżonych list:

new_list = [[expr. dla elementu listy] dla elementu listy]

Podobnie, możemy uzyskać transpozycję matrycy za pomocą zagnieżdżonej listy zrozumienia w takim podejściu zagnieżdżonym pętlą.

J = [[1, 3],
[4, 6],
[9, 2]]
J_t = [[j [v] [c] dla v w zakresie (len (j))] dla c w zakresie (len (j [0]))]
Dla C w J_T:
Drukuj (c)

Zaczynamy od utworzenia matrycy „J”, mając zamówienie 3 na 2. Zagnieżdżone rozumienie listy w kodzie poprzedzającej pętle nad członkami matrycy raz na raz i wprowadza elementy „j [v]” gdzieś w miejscu „J_T [v]”. Kolumny matrycy są iterowane w pierwszej części tak zagnieżdżonej listy rozumienia, a jej wiersze są powtarzane w drugiej kolumnie.

Mnożenie dwóch macierzy w Pythonie

Binarny proces mnożenia macierzy tworzy matrycę za pomocą dwóch macierzy. Wykorzystując zagnieżdżone pętle i rozumienie listy, możemy pomnożyć matryce w Pythonie.

Kolumna pierwszej macierzy i liczba drugiego rzędu muszą być zgodne z mnożeniem macierzy. Matryca, którą otrzymaliśmy na końcu z powodu mnożenia macierzy, będzie składać się z tej samej kolejności co oryginalna macierz. Ilustracja mnożenia macierzy pokazano poniżej.

Korzystanie z listy zagnieżdżonych do znalezienia mnożenia macierzy

Matryca może zostać utworzona w Python jako coś więcej niż tylko zagnieżdżona lista, rodzaj listy wewnątrz listy. Rząd macierzy odpowiada każdej wartości zagnieżdżonej listy. Zobaczmy instancję zagnieżdżonej pętli wykorzystywanej do pomnożenia dwóch macierzy.

N = [[9, 1, 7],
[3, 5, 6],
[4, 7, 8]]
M = [[2, 3, 5, 6],
[8, 9, 1, 2],
[4, 5, 9, 3]]
wynik = [[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
Dla u w zakresie (len (n)):
dla O w zakresie (Len (M [0])):
dla P w zakresie (Len (M)):
wynik [u] [o] += n [u] [p] * m [p] [o]
Dla D w wyniku:
Drukuj (d)

W tym przykładzie użyjemy zagnieżdżonych pętli do wykonania programu, który pomnoży dwie matryce, ale zanim to zrobimy, wygenerujemy dwie matryce, „N” i „M”, które są 3-na-3 i 3- BY-4 odpowiednio w kolejności, a także trzecią matrycę, która ma zamówienie 3 na 4. Następnie przechodzimy proces iteracji, w którym używamy elementów wierszy w „N”, kolumnach w „M” i rzędach w „M”. Zastosowaliśmy instrukcję drukowania, aby wyświetlić mnożenie zdefiniowanych macierzy.

Wykorzystanie zrozumienia zagnieżdżonej listy w celu znalezienia mnożenia macierzy

Zrozumienie zagnieżdżonej listy to proces wspólnego wykonywania rozumienia listy w ramach zrozumienia listy, co skutkuje pewną zagnieżdżoną listą

Składnia:

new_list = [[expr. dla elementu listy] dla elementu listy]

Podobnie przy tym samym podejściu zagnieżdżonym pętli, możemy również wykonać mnożenie dwóch macierzy przy użyciu metody zrozumienia zagnieżdżonej listy.

E = [[8, 1, 3],
[8, 7, 3],
[7, 3, 5]]
R = [[2, 3, 6, 8],
[9, 8, 5, 3],
[1, 3, 8, 9]]
wynik = [[sum (f*g dla f, g w zip (e_row, r_col))
dla R_COL w ZIP (*R)] dla E_ROW in E]
Dla Z w rezultacie:
druk (z)

Aby uzyskać sumę produktów każdego mnożenia wiersza po kolumnie, iterowujemy kolumny wewnątrz macierzy „R” i wierszy wewnątrz macierzy „E” w programie. Aby uzyskać kolumny macierzy „R”, wykorzystujemy metodę ZIP (). Wymagamy elementów wiersza w macierzy „E” jako drugiego elementu ze zagnieżdżonej listy zrozumienia, aby obliczyć sumę produktów dla każdego wiersza w tej zagnieżdżonej liście. Ostatecznie będzie zatrudniona instrukcja drukowania.

Wniosek

W tym przewodniku widzieliśmy kilka alternatywnych sposobów ręcznego obliczenia dodawania macierzy, mnożenia i transpozycji, a nie Numpy. Podejścia te obejmują zagnieżdżone listy, a także zrozumienie zagnieżdżonych list. Ponadto przedstawiono kilka programów, aby pokazać, w jaki sposób te podejścia można wykorzystać i działać inaczej z dodawaniem, mnożeniem i transpozycją matrycy.