Hướng dẫn how is matrix multiplication done in python? - phép nhân ma trận được thực hiện như thế nào trong python?

Trong hướng dẫn này, bạn sẽ học cách nhân hai ma trận trong Python.multiply two matrices in Python.

Bạn sẽ bắt đầu bằng cách tìm hiểu điều kiện cho phép nhân ma trận hợp lệ và viết hàm Python tùy chỉnh thành nhân ma trận. Tiếp theo, bạn sẽ thấy làm thế nào bạn có thể đạt được kết quả tương tự bằng cách sử dụng danh sách lồng nhau.

Cuối cùng, bạn sẽ tiến hành sử dụng Numpy và các chức năng tích hợp của nó để thực hiện phép nhân ma trận hiệu quả hơn.

Cách kiểm tra xem phép nhân ma trận có hợp lệ không

Trước khi viết mã python cho phép nhân ma trận, hãy để xem lại các điều cơ bản của phép nhân ma trận.

Sự nhân ma trận giữa hai ma trận A và B chỉ hợp lệ nếu số lượng cột trong ma trận A bằng số lượng hàng trong ma trận B.number of columns in matrix A is equal to the number of rows in matrix B.

Bạn có thể đã bắt gặp điều kiện này để nhân ma trận trước đó. Tuy nhiên, bạn đã bao giờ tự hỏi tại sao đây là trường hợp?

Chà, nó vì cách nhân số nhân Ma trận hoạt động. Hãy xem hình ảnh dưới đây.

Trong ví dụ chung của chúng tôi, Matrix A có các hàng m và các cột N. Và Matrix B có n hàng n và cột P.m rows and n columns. And matrix B has n rows and p columns.

NumPy array using np.array[] C = np.array[[[sum[a*b for a,b in zip[A_row, B_col]] for B_col in zip[*B]] for A_row in A]] # Output: [[ 89 107] [ 47 49] [ 40 44]]

Nếu bạn xem xét kỹ hơn, điều này tương đương với các vòng được lồng cho các vòng lặp mà chúng tôi đã có trước đó chỉ là điều đó thật ngắn gọn hơn.

Bạn cũng có thể làm điều này tất cả các chức năng tích hợp hiệu quả hơn. Hãy cùng tìm hiểu về họ trong phần tiếp theo.

Sử dụng numpy matmul [] để nhân ma trận trong python

[ for  in ]

where,
: what you'd like to do—expression or operation
: each item you'd like to perform the operation on
: the iterable [list, tuple, etc.] that you're looping through
8 lấy hai ma trận làm đầu vào và trả về sản phẩm nếu phép nhân ma trận giữa các ma trận đầu vào là hợp lệ.

C = np.matmul[A,B]
print[C]

# Output:
[[ 89 107]
 [ 47  49]
 [ 40  44]]

Lưu ý cách phương pháp này đơn giản hơn hai phương pháp chúng tôi đã học trước đó. Trên thực tế, thay vì

[ for  in ]

where,
: what you'd like to do—expression or operation
: each item you'd like to perform the operation on
: the iterable [list, tuple, etc.] that you're looping through
8, bạn có thể sử dụng toán tử @ tương đương và chúng tôi sẽ thấy điều đó ngay lập tức.

Cách sử dụng Toán tử @ trong Python để nhân ma trận

Trong Python,

sum[a*b for a,b in zip[A_row, B_col]

# zip[A_row, B_col] returns an iterator of tuples
# If A_row = [a1, a2, a3] & B_col = [b1, b2, b3]
# zip[A_row, B_col] returns [a1, b1], [a2, b2], and so on
0 là một toán tử nhị phân được sử dụng để nhân ma trận.

Nó hoạt động trên hai ma trận và nói chung, các mảng numpy n-chiều và trả về ma trận sản phẩm.

Lưu ý: Bạn cần phải có Python 3.5 và sau đó để sử dụng toán tử

sum[a*b for a,b in zip[A_row, B_col]

# zip[A_row, B_col] returns an iterator of tuples
# If A_row = [a1, a2, a3] & B_col = [b1, b2, b3]
# zip[A_row, B_col] returns [a1, b1], [a2, b2], and so on
0. You need to have Python 3.5 and later to use the
sum[a*b for a,b in zip[A_row, B_col]

# zip[A_row, B_col] returns an iterator of tuples
# If A_row = [a1, a2, a3] & B_col = [b1, b2, b3]
# zip[A_row, B_col] returns [a1, b1], [a2, b2], and so on
0 operator.

Đây là cách bạn có thể sử dụng nó.

C = A@B
print[C]

# Output
array[[[ 89, 107],
       [ 47,  49],
       [ 40,  44]]]

Lưu ý rằng ma trận sản phẩm C giống như loại chúng tôi thu được trước đó.

Bạn có thể sử dụng np.dot [] để nhân ma trận không?

Nếu bạn đã từng bắt gặp mã sử dụng

sum[a*b for a,b in zip[A_row, B_col]

# zip[A_row, B_col] returns an iterator of tuples
# If A_row = [a1, a2, a3] & B_col = [b1, b2, b3]
# zip[A_row, B_col] returns [a1, b1], [a2, b2], and so on
2 để nhân hai ma trận, thì đây là cách thức hoạt động của nó.

def multiply_matrix[A,B]:
  global C
  if  A.shape[1] == B.shape[0]:
    C = np.zeros[[A.shape[0],B.shape[1]],dtype = int]
    for row in range[rows]: 
        for col in range[cols]:
            for elt in range[len[B]]:
              C[row, col] += A[row, elt] * B[elt, col]
    return C
  else:
    return "Sorry, cannot multiply A and B."
0

Bạn có thể thấy rằng

sum[a*b for a,b in zip[A_row, B_col]

# zip[A_row, B_col] returns an iterator of tuples
# If A_row = [a1, a2, a3] & B_col = [b1, b2, b3]
# zip[A_row, B_col] returns [a1, b1], [a2, b2], and so on
3 cũng trả về ma trận sản phẩm dự kiến.

Tuy nhiên, theo tài liệu numpy, bạn chỉ nên sử dụng

sum[a*b for a,b in zip[A_row, B_col]

# zip[A_row, B_col] returns an iterator of tuples
# If A_row = [a1, a2, a3] & B_col = [b1, b2, b3]
# zip[A_row, B_col] returns [a1, b1], [a2, b2], and so on
2 để tính toán sản phẩm chấm của hai vectơ một chiều và không cho phép nhân ma trận.

Nhớ lại từ phần trước, phần tử tại INDEX [I, J] của ma trận sản phẩm C là sản phẩm chấm của hàng I của ma trận A và cột J của ma trận B.

Khi Numpy hoàn toàn phát sóng hoạt động sản phẩm chấm này đến tất cả các hàng và tất cả các cột, bạn sẽ nhận được ma trận sản phẩm kết quả. Nhưng để giữ cho mã của bạn có thể đọc được và tránh sự mơ hồ, hãy sử dụng

[ for  in ]

where,
: what you'd like to do—expression or operation
: each item you'd like to perform the operation on
: the iterable [list, tuple, etc.] that you're looping through
8 hoặc toán tử
sum[a*b for a,b in zip[A_row, B_col]

# zip[A_row, B_col] returns an iterator of tuples
# If A_row = [a1, a2, a3] & B_col = [b1, b2, b3]
# zip[A_row, B_col] returns [a1, b1], [a2, b2], and so on
0 thay thế.

Sự kết luận

Trong hướng dẫn này, bạn đã học được như sau.

  • Điều kiện cho phép nhân ma trận có giá trị: Số lượng cột trong ma trận A = số lượng hàng trong ma trận B.columns in matrix A = number of rows in matrix B.
  • Cách viết hàm Python tùy chỉnh để kiểm tra xem phép nhân Matrix có hợp lệ và trả về ma trận sản phẩm không. Cơ thể của chức năng sử dụng lồng nhau cho các vòng.
  • Tiếp theo, bạn đã học cách sử dụng các toàn bộ danh sách lồng nhau để nhân ma trận. Họ ngắn gọn hơn so với các vòng lặp nhưng dễ bị các vấn đề về khả năng đọc.
  • Cuối cùng, bạn đã học cách sử dụng chức năng tích hợp NP.Matmul [] để nhân vào ma trận và làm thế nào đây là hiệu quả nhất về tốc độ.
  • Bạn cũng đã tìm hiểu về toán tử @ để nhân hai ma trận trong Python.@ operator to multiply two matrices in Python.

Và điều đó kết thúc cuộc thảo luận của chúng tôi về phép nhân ma trận trong Python. Như một bước tiếp theo, hãy tìm hiểu cách kiểm tra xem một số là chính trong Python. Hoặc giải quyết các vấn đề thú vị trên chuỗi Python.

Học hỏi hạnh phúc! 🎉

Làm thế nào để phép nhân ma trận hoạt động trong Python?

Bước 1: Nhập hai ma trận. Bước 2: lồng nhau cho các vòng lặp để lặp qua mỗi hàng và mỗi cột. Bước 3: Lấy một ma trận kết quả ban đầu chứa tất cả 0. Sau đó, chúng tôi nhân từng phần tử hàng của ma trận thứ nhất với mỗi phần tử của ma trận thứ hai, sau đó thêm tất cả giá trị nhân.

Làm thế nào là nhân ma trận được thực hiện?

Làm thế nào để nhân hai ma trận đã cho?Để nhân một ma trận với một ma trận khác, chúng ta cần kiểm tra trước, nếu số lượng cột của ma trận thứ nhất bằng số lượng hàng của ma trận thứ hai.Bây giờ nhân mỗi phần tử của cột của ma trận thứ nhất với mỗi phần tử của hàng của ma trận thứ hai và thêm tất cả.multiply each element of the column of the first matrix with each element of rows of the second matrix and add them all.

Làm thế nào để bạn thực hiện một hoạt động ma trận trong Python?

Trong ma trận Python có thể được triển khai dưới dạng danh sách 2D hoặc mảng 2D ...
Thêm []:- Hàm này được sử dụng để thực hiện bổ sung ma trận khôn ngoan ..
Trừ []:- Hàm này được sử dụng để thực hiện phép trừ Ma trận khôn ngoan ..
chia []:- Hàm này được sử dụng để thực hiện phân chia ma trận yếu tố ..

Bài Viết Liên Quan

Chủ Đề