Python Ma trận: Ví dụ về hoán vị, nhân, mảng NumPy

Là gì Python Ma trận?

A Python ma trận là một mảng dữ liệu hình chữ nhật hai chiều chuyên dụng được lưu trữ theo hàng và cột. Dữ liệu trong ma trận có thể là số, chuỗi, biểu thức, ký hiệu, v.v. Ma trận là một trong những cấu trúc dữ liệu quan trọng có thể được sử dụng trong các phép tính toán học và khoa học.

Lam thê nao Python Ma trận có hoạt động không?

Dữ liệu bên trong mảng hai chiều ở định dạng ma trận trông như sau:

Python Matrix

Bước 1) Nó hiển thị ma trận 2 × 2. Nó có hai hàng và 2 cột. Dữ liệu bên trong ma trận là số. Hàng1 có giá trị 2,3 và hàng2 có giá trị 4,5. Các cột, tức là col1, có giá trị 2,4 và col2 có giá trị 3,5.

Bước 2) Nó hiển thị ma trận 2 × 3. Nó có hai hàng và ba cột. Dữ liệu bên trong hàng đầu tiên, tức là hàng1, có các giá trị 2,3,4 và hàng2 có các giá trị 5,6,7. Các cột col1 có giá trị 2,5, col2 có giá trị 3,6 và col3 có giá trị 4,7.

Tương tự như vậy, bạn có thể lưu trữ dữ liệu của mình bên trong ma trận nxn trong Python. Rất nhiều phép toán có thể được thực hiện trên ma trận như phép cộng, phép trừ, phép nhân, v.v.

Python không có cách đơn giản để triển khai kiểu dữ liệu ma trận.

Ma trận python sử dụng mảng và điều tương tự có thể được thực hiện.

  • Tạo ra một Python Ma trận sử dụng kiểu dữ liệu danh sách lồng nhau
  • Tạo Python Ma trận sử dụng mảng từ Python Gói Numpy

Tạo Python Ma trận sử dụng kiểu dữ liệu danh sách lồng nhau

In Python, các mảng được biểu diễn bằng kiểu dữ liệu danh sách. Vì vậy, bây giờ sẽ sử dụng danh sách để tạo ma trận python.

Chúng ta sẽ tạo ma trận 3×3 như hình dưới đây:

Tạo Python Ma trận sử dụng Danh sách lồng nhau

  • Ma trận có 3 hàng và 3 cột.
  • Hàng đầu tiên trong định dạng danh sách sẽ như sau: [8,14,-6]
  • Hàng thứ hai trong danh sách sẽ là: [12,7,4]
  • Hàng thứ ba trong danh sách sẽ là: [-11,3,21]

Ma trận bên trong một danh sách có tất cả các hàng và cột như dưới đây:

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

Vì vậy, theo ma trận được liệt kê ở trên, loại danh sách có dữ liệu ma trận như sau:

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

Để đọc dữ liệu bên trong Python Ma trận sử dụng danh sách.

Chúng tôi sẽ sử dụng ma trận được xác định ở trên. Ví dụ sẽ đọc dữ liệu, in ma trận, hiển thị phần tử cuối cùng của mỗi hàng.

Ví dụ: Để in ma trận

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

#To print the matrix
print(M1)

Đầu ra:

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

Ví dụ 2: Đọc phần tử cuối cùng của mỗi hàng

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

Đầu ra:

-6
4
21

Ví dụ 3: In các hàng trong Ma trận

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

Đầu ra:

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

Thêm ma trận bằng danh sách lồng nhau

Chúng ta có thể dễ dàng cộng hai ma trận đã cho. Các ma trận ở đây sẽ ở dạng danh sách. Chúng ta hãy xem một ví dụ liên quan đến việc cộng các ma trận đã cho.

Ma trận 1:

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

Ma trận 2 :

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

Cuối cùng sẽ khởi tạo một ma trận lưu trữ kết quả của M1 + M2.

Ma trận 3 :

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

Ví dụ: Cộng ma trận

Để cộng, các ma trận sẽ sử dụng vòng lặp for để lặp qua cả hai ma trận đã cho.

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)

Đầu ra:

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

Nhân ma trận bằng cách sử dụng danh sách lồng nhau

Để nhân các ma trận, chúng ta có thể sử dụng vòng lặp for trên cả hai ma trận như trong đoạn mã bên dưới:

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)

Đầu ra:

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

Tạo Python Ma trận sử dụng mảng từ Python Gói Numpy

Thư viện python Numpy giúp xử lý mảng. Numpy xử lý một mảng nhanh hơn một chút so với danh sách.

Để làm việc với Numpy, trước tiên bạn cần cài đặt nó. Thực hiện theo các bước dưới đây để cài đặt Numpy.

Bước 1) Lệnh cài đặt Numpy là:

pip install NumPy

Bước 2) Để sử dụng Numpy trong mã của bạn, bạn phải nhập nó.

import NumPy

Bước 3) Bạn cũng có thể nhập Numpy bằng bí danh, như hiển thị bên dưới:

import NumPy as np

Chúng ta sẽ sử dụng phương thức array() từ Numpy để tạo ma trận python.

Ví dụ: Mảng trong Numpy để tạo Python Matrix

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

Đầu ra:

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

Matrix Operasử dụng Numpy.Array()

Phép toán ma trận có thể được thực hiện là cộng, trừ, nhân, hoán vị, đọc các hàng, cột của ma trận, cắt ma trận, v.v. Trong tất cả các ví dụ, chúng ta sẽ sử dụng phương thức array().

Phép cộng ma trận

Để thực hiện phép cộng trên ma trận, chúng ta sẽ tạo hai ma trận bằng cách sử dụng numpy.array() và cộng chúng bằng toán tử (+).

Ví dụ:

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)

Đầu ra:

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

Phép trừ ma trận

Để thực hiện phép trừ trên ma trận, chúng ta sẽ tạo hai ma trận bằng cách sử dụng numpy.array() và trừ chúng bằng toán tử (-).

Ví dụ:

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)

Đầu ra:

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

Phép nhân ma trận

Đầu tiên sẽ tạo hai ma trận bằng numpy.arary(). Để nhân chúng lên, bạn có thể sử dụng phương thức numpy dot(). Numpy.dot() là tích số chấm của ma trận M1 và M2. Numpy.dot() xử lý mảng 2D và thực hiện phép nhân ma trận.

Ví dụ:

import numpy as np

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

Đầu ra:

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

Chuyển vị ma trận

Phép chuyển vị của ma trận được tính toán bằng cách thay đổi hàng thành cột và cột thành hàng. Hàm transpose() từ Numpy có thể được sử dụng để tính toán chuyển vị của ma trận.

Ví dụ:

import numpy as np

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

print(M2)

Đầu ra:

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

Cắt một ma trận

Việc cắt sẽ trả về cho bạn các phần tử từ ma trận dựa trên chỉ số bắt đầu/kết thúc đã cho.

  • Cú pháp để cắt là – [start:end]
  • Nếu chỉ số bắt đầu không được cung cấp thì nó được coi là 0. Ví dụ [:5], nó có nghĩa là [0:5].
  • Nếu phần cuối không được thông qua, nó sẽ lấy độ dài của mảng.
  • Nếu phần đầu/cuối có giá trị âm thì việc cắt sẽ được thực hiện từ cuối mảng.

Trước khi thực hiện cắt lát trên một ma trận, trước tiên chúng ta hãy hiểu cách áp dụng lát cắt trên một mảng đơn giản.

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

Đầu ra:

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

Bây giờ chúng ta hãy thực hiện cắt trên ma trận. Để thực hiện cắt lát trên một ma trận

cú pháp sẽ là M1[row_start:row_end, col_start:col_end]

  • Điểm bắt đầu/kết thúc đầu tiên sẽ dành cho hàng, tức là chọn các hàng của ma trận.
  • Điểm bắt đầu/kết thúc thứ hai sẽ dành cho cột, tức là để chọn các cột của ma trận.

Ma trận M1 mà chúng ta sẽ sử dụng như sau:

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

Có tổng cộng 4 hàng. Chỉ số bắt đầu từ 0 đến 3. Số 0th hàng là [2,4,6,8,10], 1st hàng là [3,6,9,-12,-15] theo sau là 2nd và 3rd.

Ma trận M1 có 5 cột. Chỉ số bắt đầu từ 0 đến 4. Số 0th cột có các giá trị [2,3,4,5], 1st các cột có giá trị [4,6,8,-10] theo sau là 2nd, 3rd, 4th, và 5th.

Đây là một ví dụ cho thấy cách lấy dữ liệu hàng và cột từ ma trận bằng cách sử dụng cắt lát. Trong ví dụ, chúng ta đang in 1st và 2nd hàng và đối với các cột, chúng tôi muốn cột thứ nhất, thứ hai và thứ ba. Để có được kết quả đó, chúng tôi đã sử dụng: M1[1:3, 1:4]

Ví dụ:

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.

Đầu ra:

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

Ví dụ: Để in tất cả các hàng và cột thứ ba

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.

Đầu ra:

[  8 -12  16 -20]

Ví dụ: Để in hàng đầu tiên và tất cả các cột

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

Đầu ra:

[[ 2  4  6  8 10]]

Ví dụ: Để in 2 hàng đầu tiên và XNUMX cột đầu tiên

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

Đầu ra:

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

Truy cập ma trận NumPy

Chúng ta đã thấy cách cắt hoạt động như thế nào. Cân nhắc điều đó, chúng ta sẽ làm cách nào để lấy các hàng và cột từ ma trận.

Để in các hàng của ma trận

Trong ví dụ sẽ in các hàng của ma trận.

Ví dụ:

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

Đầu ra:

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

Để lấy hàng cuối cùng, bạn có thể sử dụng chỉ mục hoặc -1. Ví dụ: ma trận có 3 hàng

vì vậy M1[0] sẽ cho bạn hàng đầu tiên,

M1[1] sẽ cho bạn hàng thứ hai

M1[2] hoặc M1[-1] sẽ cho bạn hàng thứ ba hoặc hàng cuối cùng.

Để in các cột của ma trận

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

Đầu ra:

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

Tổng kết

  • A Python ma trận là một mảng dữ liệu hình chữ nhật hai chiều chuyên dụng được lưu trữ theo hàng và cột. Dữ liệu trong ma trận có thể là số, chuỗi, biểu thức, ký hiệu, v.v. Ma trận là một trong những cấu trúc dữ liệu quan trọng có thể được sử dụng trong các phép tính toán học và khoa học.
  • Python không có cách đơn giản để triển khai kiểu dữ liệu ma trận. Python ma trận có thể được tạo bằng cách sử dụng kiểu dữ liệu danh sách lồng nhau và bằng cách sử dụng thư viện gọn gàng.
  • Thư viện python Numpy giúp xử lý mảng. Numpy xử lý một mảng nhanh hơn một chút so với danh sách.
  • Phép toán ma trận có thể được thực hiện là cộng, trừ, nhân, hoán vị, đọc hàng, cột của ma trận, cắt ma trận, v.v.
  • Để cộng hai ma trận, bạn có thể sử dụng numpy.array() và cộng chúng bằng toán tử (+).
  • Để nhân chúng lên, bạn có thể sử dụng phương thức numpy dot(). Numpy.dot() là tích số chấm của ma trận M1 và M2. Numpy.dot() xử lý mảng 2D và thực hiện phép nhân ma trận.
  • Phép chuyển vị của ma trận được tính bằng cách thay đổi hàng thành cột và cột thành hàng. Hàm transpose() từ Numpy có thể được sử dụng để tính toán chuyển vị của ma trận.
  • Việc cắt ma trận sẽ trả về cho bạn các phần tử dựa trên chỉ số bắt đầu/kết thúc đã cho.