Computer >> Máy Tính >  >> Lập trình >> Python

Nhân hai ma trận trong một dòng bằng cách sử dụng Numpy trong Python

Phép nhân ma trận là một quá trình kéo dài trong đó mỗi phần tử từ mỗi hàng và cột của ma trận sẽ được nhân và cộng theo một cách nhất định. Đối với phép nhân ma trận, số cột trong ma trận đầu tiên phải bằng số hàng trong ma trận thứ hai. Ma trận kết quả có số hàng của ma trận đầu tiên và số cột của ma trận thứ hai.

Đối với các ma trận nhỏ hơn, chúng tôi có thể thiết kế các vòng lặp for lồng nhau và tìm kết quả. Đối với các ma trận lớn hơn, chúng tôi cần một số chức năng được tích hợp sẵn trong python để giải quyết vấn đề này. Chúng ta sẽ thấy cả hai cách tiếp cận bên dưới.

Sử dụng cho Vòng lặp

Chúng ta lấy hai ma trận có kích thước 2x3 và 3x2 (hàng x cột). Kết quả của phép nhân ma trận là một ma trận 2x2. Chúng tôi có một vòng lặp for lồng nhau được thiết kế để đi qua các cột của A và các hàng của B và thêm các sản phẩm của các giá trị trong các hàng và cột đó.

Ví dụ

#matrix A with 2 rows
A = ([5,10,15],[20,25,30])

#matrix B with 2 columns
B = ([4,8],[12,10],[14,16])

result = [[0 for x in range(2)] for y in range(2)]

for i in range(len(A)):
   # iterate through columns of A
   for j in range(len(B[0])):
      # iterate through rows of B
      for k in range(len(B)):
         result[i][j] += A[i][k] * B[k][j]
for r in result:
   print(r)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau:

[350, 380]
[800, 890]

Sử dụng Numpy

Numpy có một chức năng tích hợp có tên dot, thực hiện phép nhân ma trận. Số dòng chương trình của chúng ta trở nên rất ít và cú pháp cũng rất đơn giản.

Ví dụ

import numpy as np

#matrix A
matrix_A = ([5,10,15],[20,25,30])

#matrix B
matrix_B = ([4,8],[12,10],[14,16])
result = np.dot(matrix_A,matrix_B)

# Result
print(result)

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau:

[[350 380]
[800 890]]