Python Матриця: транспонування, множення, приклади масивів NumPy

Що таке Python Матриця?

A Python матриця - це спеціалізований двовимірний прямокутний масив даних, що зберігається в рядках і стовпцях. Даними в матриці можуть бути числа, рядки, вирази, символи тощо. Матриця є однією з важливих структур даних, яку можна використовувати в математичних і наукових розрахунках.

Як Python Матриці працюють?

Дані всередині двовимірного масиву в матричному форматі виглядають наступним чином:

Python Матриця

Крок 1) Він показує матрицю 2×2. Він має два рядки та 2 стовпці. Дані всередині матриці є числами. Рядок1 має значення 2,3, а рядок2 має значення 4,5. Стовпці, тобто стовпець 1, мають значення 2,4, а стовпець 2 має значення 3,5.

Крок 2) Він показує матрицю 2×3. Він має два рядки та три стовпці. Дані всередині першого рядка, тобто рядок1, мають значення 2,3,4, а рядок2 має значення 5,6,7. Стовпці col1 мають значення 2,5, col2 — 3,6, а col3 — 4,7.

Так само ви можете зберігати свої дані всередині матриці nxn Python. Багато операцій можна виконувати над матричним додаванням, відніманням, множенням тощо.

Python не має прямого способу реалізації типу даних матриці.

Матриця Python використовує масиви, і те саме можна реалізувати.

  • Створити Python Матриця з використанням типу даних вкладеного списку
  • Створити Python Матриця з використанням масивів з Python Пакет Numpy

Створити Python Матриця з використанням типу даних вкладеного списку

In Python, масиви представлені за допомогою типу даних списку. Тож тепер використаємо список для створення матриці Python.

Ми створимо матрицю 3×3, як показано нижче:

Створити Python Матриця з використанням вкладеного списку

  • Матриця має 3 рядки і 3 стовпці.
  • Перший рядок у форматі списку буде таким: [8,14,-6]
  • Другий рядок у списку буде таким: [12,7,4]
  • Третій рядок у списку буде таким: [-11,3,21]

Матриця всередині списку з усіма рядками та стовпцями виглядає так, як показано нижче:

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

Відповідно до матриці, наведеної вище, тип списку з даними матриці такий:

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

Щоб прочитати дані всередині Python Матриця з використанням списку.

Ми будемо використовувати матрицю, визначену вище. Приклад прочитає дані, надрукує матрицю, відобразить останній елемент із кожного рядка.

Приклад: роздрукувати матрицю

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

#To print the matrix
print(M1)

вихід:

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

Приклад 2: прочитати останній елемент із кожного рядка

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

вихід:

-6
4
21

Приклад 3: надрукувати рядки в матриці

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

вихід:

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

Додавання матриць за допомогою вкладеного списку

Ми можемо легко скласти дві задані матриці. Матриці тут будуть у формі списку. Давайте попрацюємо над прикладом, який подбає про додавання заданих матриць.

Матриця 1:

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

Матриця 2:

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

Остання ініціалізує матрицю, яка зберігатиме результат M1 + M2.

Матриця 3:

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

Приклад: додавання матриць

Крім того, матриці використовуватимуть цикл for, який проходитиме обидві наведені матриці.

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)

вихід:

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

Множення матриць за допомогою вкладеного списку

Щоб помножити матриці, ми можемо використовувати цикл for для обох матриць, як показано в коді нижче:

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)

вихід:

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

Створити Python Матриця з використанням масивів з Python Пакет Numpy

Бібліотека python Numpy допомагає працювати з масивами. Numpy обробляє масив трохи швидше, ніж список.

Щоб працювати з Numpy, його потрібно спочатку встановити. Щоб установити Numpy, виконайте наведені нижче дії.

Крок 1) Команда для встановлення Numpy така:

pip install NumPy

Крок 2) Щоб використовувати Numpy у своєму коді, його потрібно імпортувати.

import NumPy

Крок 3) Ви також можете імпортувати Numpy за допомогою псевдоніма, як показано нижче:

import NumPy as np

Ми збираємося використовувати метод array() із Numpy для створення матриці python.

Приклад: масив у Numpy для створення Python Матриця

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

вихід:

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

Матриця Operaза допомогою Numpy.Array()

Матричні операції, які можна виконати, це додавання, віднімання, множення, транспонування, читання рядків, стовпців матриці, розрізання матриці тощо. У всіх прикладах ми будемо використовувати метод array().

Матричне додавання

Щоб виконати додавання матриці, ми створимо дві матриці за допомогою numpy.array() і додамо їх за допомогою оператора (+).

приклад:

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)

вихід:

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

Матричне віднімання

Щоб виконати віднімання матриці, ми створимо дві матриці за допомогою numpy.array() і віднімемо їх за допомогою оператора (-).

приклад:

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)

вихід:

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

Матричне множення

Спочатку буде створено дві матриці за допомогою numpy.arary(). Щоб помножити їх, ви можете скористатися методом numpy dot(). Numpy.dot() — скалярний добуток матриці M1 і M2. Numpy.dot() обробляє 2D-масиви та виконує множення матриць.

приклад:

import numpy as np

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

вихід:

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

Транспонування матриці

Транспонування матриці обчислюється шляхом заміни рядків на стовпці та стовпців на рядки. Функцію transpose() від Numpy можна використовувати для обчислення транспонування матриці.

приклад:

import numpy as np

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

print(M2)

вихід:

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

Нарізка матриці

Розрізання поверне вам елементи з матриці на основі заданого початкового/кінцевого індексу.

  • Синтаксис нарізки – [початок:кінець]
  • Якщо початковий індекс не вказано, він вважається 0. Наприклад, [:5], це означає як [0:5].
  • Якщо кінець не передано, він буде вважатися довжиною масиву.
  • Якщо початок/кінець має від’ємні значення, нарізка буде виконана з кінця масиву.

Перш ніж працювати над нарізкою на матриці, давайте спочатку зрозуміємо, як застосувати нарізку на простому масиві.

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

вихід:

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

Тепер давайте реалізуємо нарізку на матриці. Виконати нарізку на матриці

синтаксис буде M1[row_start:row_end, col_start:col_end]

  • Перший початок/кінець буде для рядка, тобто для вибору рядків матриці.
  • Другий початок/кінець буде для стовпця, тобто для вибору стовпців матриці.

Матриця M1, яку ми будемо використовувати, має такий вигляд:

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

Всього 4 ряди. Індекс починається від 0 до 3. 0th рядок [2,4,6,8,10], 1st рядок [3,6,9,-12,-15], а потім 2nd і 3rd.

Матриця M1 має 5 стовпців. Індекс починається від 0 до 4. 0th стовпець має значення [2,3,4,5], 1st стовпці мають значення [4,6,8,-10], за якими йде 2nd, 3rd, 4thі 5th.

Ось приклад, який показує, як отримати дані рядків і стовпців із матриці за допомогою нарізки. У прикладі ми друкуємо 1st і 2nd рядок, а для стовпців нам потрібні перший, другий і третій стовпці. Щоб отримати цей результат, ми використали: M1[1:3, 1:4]

приклад:

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.

вихід:

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

Приклад: щоб надрукувати всі рядки та треті стовпці

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.

вихід:

[  8 -12  16 -20]

Приклад: щоб надрукувати перший рядок і всі стовпці

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

вихід:

[[ 2  4  6  8 10]]

Приклад: щоб надрукувати перші три рядки та перші 2 стовпці

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

вихід:

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

Доступ до NumPy Matrix

Ми побачили, як працює нарізка. Беручи це до уваги, ми розглянемо, як отримати рядки та стовпці з матриці.

Для друку рядків матриці

У прикладі виведемо рядки матриці.

приклад:

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

вихід:

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

Щоб отримати останній рядок, ви можете використовувати індекс або -1. Наприклад, матриця має 3 рядки,

тому M1[0] дасть вам перший рядок,

M1[1] дасть вам другий ряд

M1[2] або M1[-1] дасть вам третій або останній рядок.

Для друку стовпців матриці

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

вихід:

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

Підсумки

  • A Python матриця - це спеціалізований двовимірний прямокутний масив даних, що зберігається в рядках і стовпцях. Даними в матриці можуть бути числа, рядки, вирази, символи тощо. Матриця є однією з важливих структур даних, яку можна використовувати в математичних і наукових розрахунках.
  • Python не має прямого способу реалізації типу даних матриці. Python матрицю можна створити за допомогою типу даних вкладеного списку та за допомогою бібліотеки numpy.
  • Бібліотека python Numpy допомагає працювати з масивами. Numpy обробляє масив трохи швидше, ніж список.
  • Матричні операції, які можна виконати, це додавання, віднімання, множення, транспонування, читання рядків, стовпців матриці, розрізання матриці тощо.
  • Щоб додати дві матриці, ви можете скористатися numpy.array() і додати їх за допомогою оператора (+).
  • Щоб помножити їх, ви можете скористатися методом numpy dot(). Numpy.dot() — скалярний добуток матриці M1 і M2. Numpy.dot() обробляє 2D-масиви та виконує множення матриць.
  • Транспонування матриці обчислюється шляхом зміни рядків на стовпці та стовпців на рядки. Функцію transpose() від Numpy можна використовувати для обчислення транспонування матриці.
  • Розрізання матриці поверне вам елементи на основі заданого початкового/кінцевого індексу.