Python Matice: příklady transpozice, násobení, numerických polí

Co je to Python Matice?

A Python matice je specializované dvourozměrné obdélníkové pole dat uložených v řádcích a sloupcích. Data v matici mohou být čísla, řetězce, výrazy, symboly atd. Matice je jednou z důležitých datových struktur, kterou lze použít v matematických a vědeckých výpočtech.

Jak Python Matice fungují?

Data uvnitř dvourozměrného pole v maticovém formátu vypadají následovně:

Python Matice

Krok 1) Ukazuje matici 2×2. Má dva řádky a 2 sloupce. Data uvnitř matice jsou čísla. Řádek1 má hodnoty 2,3 a řádek2 má hodnoty 4,5. Sloupce, tj. col1, mají hodnoty 2,4 a sloupec2 má hodnoty 3,5.

Krok 2) Ukazuje matici 2×3. Má dva řádky a tři sloupce. Data v prvním řádku, tj. řádek1, mají hodnoty 2,3,4 a řádek2 má hodnoty 5,6,7. Sloupce col1 mají hodnoty 2,5, col2 mají hodnoty 3,6 a col3 mají hodnoty 4,7.

Podobně můžete mít data uložená uvnitř matice nxn Python. S maticovým sčítáním, odčítáním, násobením atd. lze provádět mnoho operací.

Python nemá přímočarý způsob implementace datového typu matice.

Matice pythonu využívá pole a totéž lze implementovat.

  • Vytvořit Python Matice pomocí datového typu vnořeného seznamu
  • Vytvořit Python Matice pomocí Arrays from Python Nudný balíček

Vytvořit Python Matice pomocí datového typu vnořeného seznamu

In Python, pole jsou reprezentována pomocí datového typu seznamu. Nyní tedy použijeme seznam k vytvoření pythonovské matice.

Vytvoříme matici 3×3, jak je uvedeno níže:

Vytvořit Python Matice pomocí vnořeného seznamu

  • Matice má 3 řádky a 3 sloupce.
  • První řádek ve formátu seznamu bude následující: [8,14,-6]
  • Druhý řádek v seznamu bude: [12,7,4]
  • Třetí řádek v seznamu bude: [-11,3,21]

Matice uvnitř seznamu se všemi řádky a sloupci je uvedena níže:

List = [[Row1], 
           [Row2], 
           [Row3]
           ...
           [RowN]]

Takže podle výše uvedené matice je typ seznamu s daty matice následující:

M1 = [[8, 14, -6], [12,7,4], [-11,3,21]]

Pro čtení dat uvnitř Python Matice pomocí seznamu.

Použijeme výše definovanou matici. Příklad načte data, vytiskne matici, zobrazí poslední prvek z každého řádku.

Příklad: Tisk matice

M1 = [[8, 14, -6], 
           [12,7,4], 
           [-11,3,21]]

#To print the matrix
print(M1)

Výstup:

The Matrix M1 =  [[8, 14, -6], [12, 7, 4], [-11, 3, 21]]

Příklad 2: Čtení posledního prvku z každého řádku

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

matrix_length = len(M1)

#To read the last element from each row.
for i in range(matrix_length):
    print(M1[i][-1])

Výstup:

-6
4
21

Příklad 3: Tisk řádků v matici

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

matrix_length = len(M1)

#To print the rows in the Matrix
for i in range(matrix_length):
    print(M1[i])

Výstup:

[8, 14, -6]
[12, 7, 4]
[-11, 3, 21]

Přidávání matic pomocí vnořeného seznamu

Můžeme snadno přidat dvě dané matice. Matriky zde budou ve formě seznamu. Pojďme pracovat na příkladu, který se postará o sečtení daných matic.

Matice 1:

M1 = [[8, 14, -6],
           [12,7,4], 
           [-11,3,21]]

Matrix 2:

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

Last inicializuje matici, která uloží výsledek M1 + M2.

Matrix 3:

M3  = [[0,0,0],
            [0,0,0],
            [0,0,0]]

Příklad: Přidání matic

Kromě toho budou matice využívat smyčku for, která bude procházet oběma uvedenými maticemi.

M1 = [[8, 14, -6], 
      [12,7,4], 
      [-11,3,21]]

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

M3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]
matrix_length = len(M1)

#To Add M1 and M2 matrices
for i in range(len(M1)):
for k in range(len(M2)):
        M3[i][k] = M1[i][k] + M2[i][k]

#To Print the matrix
print("The sum of Matrix M1 and M2 = ", M3)

Výstup:

The sum of Matrix M1 and M2 =  [[11, 30, -12], [21, 14, 0], [-12, 6, 34]]

Násobení matic pomocí vnořeného seznamu

K vynásobení matic můžeme použít for-loop na obou maticích, jak je znázorněno v kódu níže:

M1 = [[8, 14, -6], 
      [12,7,4], 
      [-11,3,21]]

M2 = [[3, 16, -6],
           [9,7,-4], 
           [-1,3,13]]

M3  = [[0,0,0],
       [0,0,0],
       [0,0,0]]

matrix_length = len(M1)

#To Multiply M1 and M2 matrices
for i in range(len(M1)):
for k in range(len(M2)):
        M3[i][k] = M1[i][k] * M2[i][k]

#To Print the matrix
print("The multiplication of Matrix M1 and M2 = ", M3)

Výstup:

The multiplication of Matrix M1 and M2 =  [[24, 224, 36], [108, 49, -16], [11, 9, 273]]

Vytvořit Python Matice pomocí Arrays from Python Nudný balíček

Python knihovna Numpy pomáhá vypořádat se s poli. Numpy zpracovává pole o něco rychleji ve srovnání se seznamem.

Chcete-li pracovat s Numpy, musíte jej nejprve nainstalovat. Při instalaci Numpy postupujte podle níže uvedených kroků.

Krok 1) Příkaz k instalaci Numpy je:

pip install NumPy

Krok 2) Chcete-li použít Numpy ve svém kódu, musíte jej importovat.

import NumPy

Krok 3) Numpy můžete také importovat pomocí aliasu, jak je znázorněno níže:

import NumPy as np

K vytvoření pythonovské matice použijeme metodu array() z Numpy.

Příklad: Pole v Numpy k vytvoření Python Matice

import numpy as np
M1 = np.array([[5, -10, 15], [3, -6, 9], [-4, 8, 12]])
print(M1)

Výstup:

[[  5 -10  15]
 [  3  -6   9]
 [ -4   8  12]]

Matice Operapomocí Numpy.Array()

Operace s maticí, kterou lze provést, je sčítání, odčítání, násobení, transpozice, čtení řádků, sloupců matice, dělení matice atd. Ve všech příkladech použijeme metodu array().

Sčítání matice

Chcete-li provést sčítání na matici, vytvoříme dvě matice pomocí numpy.array() a přidáme je pomocí operátoru (+).

Příklad:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]])
M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]])
M3 = M1 + M2  
print(M3)

Výstup:

[[ 12 -12  36]
 [ 16  12  48]
 [  6 -12  60]]

Odčítání matice

Chcete-li provést odečítání na matici, vytvoříme dvě matice pomocí numpy.array() a odečteme je pomocí operátoru (-).

Příklad:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [-7, 14, 21]])
M2 = np.array([[9, -18, 27], [11, 22, 33], [13, -26, 39]])
M3 = M1 - M2  
print(M3)

Výstup:

[[ -6  24 -18]
 [ -6 -32 -18]
 [-20  40 -18]]

Maticové násobení

Nejprve vytvoříte dvě matice pomocí numpy.arary(). Chcete-li je vynásobit, můžete použít metodu numpy dot(). Numpy.dot() je bodový součin matice M1 a M2. Numpy.dot() zpracovává 2D pole a provádí násobení matic.

Příklad:

import numpy as np

M1 = np.array([[3, 6], [5, -10]])
M2 = np.array([[9, -18], [11, 22]])
M3 = M1.dot(M2)  
print(M3)

Výstup:

[[  93   78]
 [ -65 -310]]

Matrix Transpose

Transpozice matice se vypočítá změnou řádků jako sloupců a sloupců jako řádků. K výpočtu transpozice matice lze použít funkci transpose() z Numpy.

Příklad:

import numpy as np

M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]])
M2 = M1.transpose()

print(M2)

Výstup:

[[  3   5   4]
 [  6 -10   8]
 [  9  15  12]]

Rozřezání Matrixu

Slicing vám vrátí prvky z matice na základě daného počátečního/koncového indexu.

  • Syntaxe pro krájení je – [start:end]
  • Pokud není uveden počáteční index, je považován za 0. Například [:5], to znamená jako [0:5].
  • Pokud konec není předán, bude to trvat jako délka pole.
  • Pokud má začátek/konec záporné hodnoty, bude krájení provedeno od konce pole.

Než začneme pracovat na dělení na matici, nejprve pochopíme, jak aplikovat řez na jednoduché pole.

import numpy as np

arr = np.array([2,4,6,8,10,12,14,16])
print(arr[3:6]) # will print the elements from 3 to 5
print(arr[:5]) # will print the elements from 0 to 4
print(arr[2:]) # will print the elements from 2 to length of the array.
print(arr[-5:-1]) # will print from the end i.e. -5 to -2
print(arr[:-1]) # will print from end i.e. 0 to -2

Výstup:

[ 8 10 12]
[ 2  4  6  8 10]
[ 6  8 10 12 14 16]
[ 8 10 12 14]
[ 2  4  6  8 10 12 14]

Nyní implementujme krájení na matrici. K provádění krájení na matrici

syntaxe bude M1[row_start:row_end, col_start:col_end]

  • První začátek/konec bude pro řádek, tj. pro výběr řádků matice.
  • Druhý začátek/konec bude pro sloupec, tedy pro výběr sloupců matice.

Matice M1, kterou budeme používat, je následující:

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])

Celkem jsou 4 řady. Index začíná od 0 do 3. 0th řádek je [2,4,6,8,10], 1st řádek je [3,6,9,-12,-15] následovaný 2nd a 3rd.

Matice M1 má 5 sloupců. Index začíná od 0 do 4. 0th sloupec má hodnoty [2,3,4,5], 1st sloupce mají hodnoty [4,6,8,-10] následované 2nd, 3rd, 4tha 5th.

Zde je příklad ukazující, jak získat data řádků a sloupců z matice pomocí řezání. V příkladu tiskneme 1st a 2nd řádek a pro sloupce chceme první, druhý a třetí sloupec. K získání tohoto výstupu jsme použili: M1[1:3, 1:4]

Příklad:

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[1:3, 1:4]) # For 1:3, it will give first and second row.
#The columns will be taken from first to third.

Výstup:

[[  6   9 -12]
 [  8  12  16]]

Příklad: Chcete-li vytisknout všechny řádky a třetí sloupce

import numpy as np
M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:,3]) # This will print all rows and the third column data.

Výstup:

[  8 -12  16 -20]

Příklad: Chcete-li vytisknout první řádek a všechny sloupce

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:1,]) # This will print first row and all columns

Výstup:

[[ 2  4  6  8 10]]

Příklad: Chcete-li vytisknout první tři řádky a první 2 sloupce

import numpy as np

M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:3,:2])

Výstup:

[[2 4]
 [3 6]
 [4 8]]

Přístup k NumPy Matrix

Viděli jsme, jak funguje krájení. Když to vezmeme v úvahu, zjistíme, jak získat řádky a sloupce z matice.

Tisk řádků matice

V příkladu se vytisknou řádky matice.

Příklad:

import numpy as np
M1 = np.array([[3, 6, 9], [5, -10, 15], [4,8,12]])
print(M1[0])  #first row
print(M1[1]) # the second row
print(M1[-1]) # -1 will print the last row

Výstup:

[3 6 9]
[  5 -10  15]
[ 4  8 12]

Chcete-li získat poslední řádek, můžete použít index nebo -1. Například matice má 3 řádky,

takže M1[0] vám dá první řadu,

M1[1] vám poskytne druhou řadu

M1[2] nebo M1[-1] vám poskytne třetí řádek nebo poslední řádek.

Tisk sloupců matice

import numpy as np
M1 = np.array([[2, 4, 6, 8, 10], 
    [3, 6, 9, -12, -15],
    [4, 8, 12, 16, -20],
    [5, -10, 15, -20, 25]])
print(M1[:,0]) # Will print the first Column
print(M1[:,3]) # Will  print the third Column
print(M1[:,-1]) # -1 will give you the last column

Výstup:

[2 3 4 5]
[  8 -12  16 -20]
[ 10 -15 -20  25]

Shrnutí

  • A Python matice je specializované dvourozměrné obdélníkové pole dat uložených v řádcích a sloupcích. Data v matici mohou být čísla, řetězce, výrazy, symboly atd. Matice je jednou z důležitých datových struktur, kterou lze použít v matematických a vědeckých výpočtech.
  • Python nemá přímočarý způsob implementace datového typu matice. Python matici lze vytvořit pomocí datového typu vnořeného seznamu a pomocí knihovny numpy.
  • Python knihovna Numpy pomáhá vypořádat se s poli. Numpy zpracovává pole o něco rychleji ve srovnání se seznamem.
  • Operace s maticí, kterou lze provést, je sčítání, odčítání, násobení, transpozice, čtení řádků, sloupců matice, dělení matice atd.
  • Chcete-li přidat dvě matice, můžete použít numpy.array() a přidat je pomocí operátoru (+).
  • Chcete-li je vynásobit, můžete použít metodu numpy dot(). Numpy.dot() je bodový součin matice M1 a M2. Numpy.dot() zpracovává 2D pole a provádí násobení matic.
  • Transpozice matice se vypočítá změnou řádků jako sloupců a sloupců jako řádků. K výpočtu transpozice matice lze použít funkci transpose() z Numpy.
  • Rozdělení matice vám vrátí prvky na základě daného počátečního/koncového indexu.