Hướng dẫn dùng matmul numpy python

Phép nhân ma trận là một phép toán tạo ra một ma trận duy nhất bằng cách lấy hai ma trận làm đầu vào và nhân các hàng của ma trận thứ nhất với cột của ma trận thứ hai. Lưu ý rằng chúng ta phải đảm bảo rằng số hàng trong ma trận đầu tiên phải bằng số cột trong ma trận thứ hai.

Các bài viết liên quan:

Hướng dẫn dùng matmul numpy python

Trong Python, quá trình nhân ma trận bằng NumPy được gọi là vectơ hóa. Mục tiêu chính của vectơ hóa là loại bỏ hoặc giảm các vòng lặp for mà chúng tôi đang sử dụng một cách rõ ràng. Bằng cách giảm vòng lặp ‘for’ từ các chương trình giúp tính toán nhanh hơn. Gói tích hợp NumPy được sử dụng để thao tác và xử lý mảng.

Đây là ba phương pháp mà qua đó chúng ta có thể thực hiện phép nhân ma trận numpy.

  • Đầu tiên là việc sử dụng hàm nhân (), thực hiện phép nhân theo phần tử của ma trận.
  • Thứ hai là việc sử dụng hàm matmul (), hàm này thực hiện tích ma trận của hai mảng.
  • Cuối cùng là sử dụng hàm dot (), hàm này thực hiện tích số chấm của hai mảng.

Ví dụ 1: Phép nhân ma trận theo phần tử

import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.multiply(array1,array2) result

Trong đoạn code trên

  • Chúng tôi đã tạo một array1 và array2 bằng cách sử dụng hàm numpy.array () với kích thước 3.
  • Chúng tôi đã tạo một kết quả biến và gán giá trị trả về của hàm np.multiply ().
  • Chúng tôi đã chuyển cả mảng array1 và array2 trong np.multiply ().
  • Cuối cùng, chúng tôi đã cố gắng in giá trị của kết quả.

Trong đầu ra, một ma trận ba chiều đã được hiển thị có các phần tử là kết quả của phép nhân khôn ngoan phần tử của cả hai phần tử array1 và array2.

Output:

Ví dụ 2: Sản phẩm ma trận

import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.matmul(array1,array2) result

Output:

Trong đoạn code trên

  • Chúng tôi đã tạo array1 và array2 bằng cách sử dụng hàm numpy.array () với kích thước 3.
  • Chúng tôi đã tạo một kết quả biến và gán giá trị trả về của hàm np.matmul ().
  • Chúng tôi đã chuyển cả mảng array1 và array2 trong np.matmul ().
  • Cuối cùng, chúng tôi đã cố gắng in giá trị của kết quả.

Trong đầu ra, một ma trận ba chiều đã được hiển thị có các phần tử là tích của cả phần tử array1 và array2.

Ví dụ 3: Dot product

Đây là các thông số kỹ thuật sau cho numpy.dot:

  • Khi cả a và b đều là mảng 1-D (một chiều )-> Tích bên trong của hai vectơ
  • Khi cả a và b đều là mảng 2-D (hai chiều) -> Phép nhân ma trận
  • Khi a hoặc b là 0-D (còn được gọi là vô hướng) -> Nhân bằng cách sử dụng numpy.multiply (a, b) hoặc a * b.
  • Khi a là mảng N-D và b là mảng 1-D -> Tính tổng trên trục cuối cùng của a và b.
  • Khi a là mảng N-D và b là mảng M-D với điều kiện M> = 2 -> Tính tổng tích trên trục cuối cùng của a và trục thứ hai đến cuối của b:
  • Ngoài ra, dấu chấm (a, b) [i, j, k, m] = sum (a [i, j,:] * b [k,:, m])

import numpy as np array1=np.array([[1,2,3],[4,5,6],[7,8,9]],ndmin=3) array2=np.array([[9,8,7],[6,5,4],[3,2,1]],ndmin=3) result=np.dot(array1,array2) result

Trong đoạn code trên

  • Chúng tôi đã tạo array1 và array2 bằng cách sử dụng hàm numpy.array () với kích thước 3.
  • Chúng tôi đã tạo một kết quả biến và gán giá trị trả về của hàm np.dot ().
  • Chúng tôi đã chuyển cả mảng array1 và array2 trong np.dot ().
  • Cuối cùng, chúng tôi đã cố gắng in giá trị của kết quả.

Trong đầu ra, một ma trận ba chiều đã được hiển thị có các phần tử là tích số chấm của cả phần tử array1 và array2.

Output: