Python Ma trận: Chuyển vị, Nhân, Mảng NumPy

⚡ Tóm tắt thông minh

A Python Ma trận là một mảng dữ liệu hai chiều gồm các hàng và cột, được sử dụng trong toán học và khoa học. Ở đây, bạn sẽ học cách tạo ma trận bằng danh sách lồng nhau và NumPy, cũng như thực hiện các phép cộng, nhân, chuyển vị và cắt lát.

  • 🔢 Những gì nó là: Ma trận là một mảng dữ liệu hai chiều gồm các hàng và cột.
  • 📋 Danh sách lồng nhau: Python Ma trận có thể được xây dựng dưới dạng danh sách các danh sách.
  • 🧮 Mảng NumPy: numpy.array() tạo ra các ma trận nhanh hơn và giàu tính năng hơn.
  • Operaý kiến: Thêm, trừtract, và nhân ma trận với các toán tử hoặc numpy.dot().
  • 🔄 Chuyển vị và cắt lát: Hàm transpose() hoán đổi hàng và cột; hàm slicing chọn các ma trận con.
  • 🤖 Hỗ trợ từ AI: Các công cụ AI như Copilot tạo ra ma trận và mã NumPy ngay lập tức.

Python Matrix

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 PythonCó thể thực hiện nhiều phép toán trên ma trận, ví dụ như phép cộng, phép trừ.tracphép tính, 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()

Các phép toán ma trận có thể thực hiện là phép cộng, phép trừ.tracPhép toán, phép nhân, phép chuyển vị, đọ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]]

Ma trận contracsản xuất

Để thực hiện phụtracĐể xử lý ma trận, chúng ta sẽ tạo hai ma trận bằng cách sử dụng numpy.array() và phép trừ.tract chúng bằng cách sử dụ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]

Câu Hỏi Thường Gặp

Ma trận là một mảng dữ liệu hình chữ nhật hai chiều được sắp xếp theo hàng và cột. Python Không có kiểu dữ liệu ma trận tích hợp sẵn, vì vậy bạn phải sử dụng danh sách lồng nhau hoặc thư viện NumPy.

Tạo ma trận dưới dạng danh sách lồng nhau, ví dụ như [[8, 14, -6], [12, 7, 4]], hoặc sử dụng numpy.array() để tạo ma trận nhanh hơn, mạnh mẽ hơn và hỗ trợ các phép toán tích hợp sẵn.

NumPy xử lý mảng nhanh hơn danh sách thông thường và cung cấp các phép toán ma trận tích hợp sẵn như phép cộng, tích vô hướng, chuyển vị và cắt lát, giúp mã ma trận ngắn gọn và hiệu quả hơn.

Để thực hiện phép nhân ma trận thực sự, hãy sử dụng numpy.dot(M1, M2) hoặc M1.dot(M2). Các toán tử cộng và sao trên mảng NumPy thực hiện phép cộng và phép nhân từng phần tử.

Gọi phương thức `transpose()` trên một mảng NumPy, ví dụ như `M1.transpose()`. Phương thức này hoán đổi hàng và cột, do đó phần tử ở hàng i, cột j sẽ chuyển đến hàng j, cột i.

Các trợ lý AI như GitHub Copilot tự động hoàn thành mã mảng NumPy, tạo ra các phép toán ma trận như tích vô hướng và chuyển vị, và giải thích cú pháp cắt lát khi bạn viết mã. Python.

Đúng vậy. Các công cụ hỗ trợ bởi trí tuệ nhân tạo có thể tự động hóa việc viết các pipeline NumPy, lựa chọn các phép toán vector hóa hiệu quả thay vì vòng lặp, và tạo mã cho các tác vụ đại số tuyến tính như giải hệ phương trình.

Sử dụng M1[row_start:row_end, col_start:col_end] để chọn một ma trận con. Việc bỏ qua điểm bắt đầu hoặc kết thúc sẽ sử dụng giới hạn của mảng, và các chỉ số âm sẽ tính từ cuối.

Tóm tắt bài viết này với: