Làm thế nào để bạn nhân ma trận 2x2 trong python?
Xin chào mã của tôi, tôi phải nhân một điểm/vectơ (1,0) với ma trận [1. 00583, -0. 087156], [0. 087156, 1. 00583]. Kết quả sẽ cho tôi một điểm mới (x,y) Đây là những gì tôi có cho đến nay Show
Kết quả vẫn mang lại cho tôi ma trận (2x2) thay vì (2x1) mà tôi có thể sử dụng làm điểm. Có chức năng nào khác hoặc cách nào tốt hơn để giải quyết vấn đề này không? Chúng ta sẽ viết một chương trình Python để lấy phép nhân hai ma trận đầu vào và in kết quả ra đầu ra. Chương trình Python này chỉ định cách nhân hai ma trận, có một số giá trị nhất định Trước khi viết chương trình Python, trước tiên chúng ta hãy xem tổng quan về phép nhân hai ma trận Phép nhân ma trậnPhép nhân ma trận là một phép toán nhị phân sử dụng một cặp ma trận để tạo ra một ma trận khác. Các phần tử trong ma trận được nhân theo cấp số cộng sơ cấp Trong phép nhân hai ma trận, các phần tử hàng của ma trận thứ nhất được nhân với các phần tử cột của ma trận thứ hai Ví dụ. Giả sử ta cho hai ma trận A và B sau C sẽ là phép cộng của hai ma trận đã cho ở trên, i. e. , C = A+B, và do đó C phải là Như chúng ta có thể thấy rằng ma trận kết quả C, còn được gọi là tích ma trận, có cùng số hàng với ma trận thứ nhất (ma trận A) và cùng số cột với ma trận thứ hai (ma trận B). Chúng ta cũng biết loại phép nhân ma trận này là tích vô hướng của ma trận Nhân hai ma trậnBây giờ, chúng ta sẽ viết một chương trình Python để nhân hai ma trận trong đó chúng ta thực hiện phép nhân như chúng ta đã thực hiện trong ví dụ đã cho ở trên. Chúng ta có thể sử dụng nhiều phương thức khác nhau để viết một chương trình Python như thế này, nhưng trong hướng dẫn này, chúng ta sẽ chỉ sử dụng hai phương thức sau
Trong cả hai phương pháp, chúng tôi sẽ viết một chương trình ví dụ để hiểu cách thực hiện của chúng để nhân hai ma trận Phương pháp 1. Sử dụng phương thức vòng lặp for lồng nhauTrong phương pháp này, chúng ta sẽ sử dụng vòng lặp for lồng nhau trên hai ma trận và thực hiện phép nhân trên chúng và lưu trữ kết quả phép nhân trong ma trận thứ ba làm giá trị kết quả Hãy hiểu cách thực hiện phương pháp này thông qua ví dụ sau Ví dụ. Nhìn vào chương trình Python sau đầu ra The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103] Phương pháp 2. Sử dụng phương pháp hiểu danh sách lồng nhauTrong phương pháp này, chúng tôi sẽ sử dụng cách hiểu danh sách lồng nhau để lấy kết quả nhân của hai ma trận đầu vào. Trong khi sử dụng phương pháp hiểu danh sách trong chương trình, chúng tôi cũng sẽ sử dụng 'zip in Python' trên danh sách lồng nhau. Hãy cùng tìm hiểu cách thực hiện của phương thức này thông qua ví dụ sau Bạn sẽ bắt đầu bằng cách tìm hiểu điều kiện để nhân ma trận hợp lệ và viết một hàm Python tùy chỉnh để nhân ma trận. Tiếp theo, bạn sẽ thấy cách bạn có thể đạt được kết quả tương tự bằng cách sử dụng khả năng hiểu danh sách lồng nhau Cuối cùng, bạn sẽ tiếp tục sử dụng NumPy và các hàm tích hợp của nó để thực hiện phép nhân ma trận hiệu quả hơn Trước khi viết mã Python cho phép nhân ma trận, hãy xem lại những kiến thức cơ bản về phép nhân ma trận
Bạn có thể đã gặp điều kiện này đối với phép nhân ma trận trước đây. Tuy nhiên, bạn đã bao giờ tự hỏi tại sao lại như vậy chưa? Chà, đó là do cách hoạt động của phép nhân ma trận. Hãy nhìn vào hình ảnh dưới đây Trong ví dụ chung của chúng ta, ma trận A có m hàng và n cột. Và ma trận B có n hàng và p cột Hình dạng của ma trận sản phẩm là gì?
Vì vậy, để lấy một phần tử tại một chỉ mục cụ thể trong ma trận kết quả C, bạn sẽ phải tính tích vô hướng của hàng và cột tương ứng trong ma trận A và B, tương ứng Lặp lại quy trình trên, bạn sẽ nhận được ma trận tích C có hình dạng m x p—với m hàng và p cột, như hình bên dưới Và tích vô hướng hay tích trong giữa hai vectơ a và b được cho bởi phương trình sau Bây giờ hãy tóm tắt
Để ý kỹ hơn, n là số cột của ma trận A, đồng thời cũng là số hàng của ma trận B. Và đây chính là lý do tại sao bạn cần số cột trong ma trận A bằng số hàng trong ma trận B Hi vọng các bạn đã hiểu điều kiện để phép nhân ma trận hợp lệ và cách lấy từng phần tử trong ma trận tích Hãy tiến hành viết một số mã Python để nhân hai ma trận Viết một hàm Python tùy chỉnh để nhân ma trậnBước đầu tiên, chúng ta hãy viết một hàm tùy chỉnh để nhân các ma trận Chức năng này nên làm như sau
Bước 1. Tạo hai ma trận số nguyên bằng hàm 1 của NumPy. Bạn cũng có thể khai báo ma trận dưới dạng danh sách Python lồng nhau
Bước 2. Hãy tiếp tục và xác định chức năng 2. Hàm này lấy hai ma trận 3 và 4 làm đầu vào và trả về ma trận tích 5 nếu phép nhân ma trận hợp lệ
Phân tích định nghĩa hàmHãy tiến hành phân tích cú pháp định nghĩa hàm Khai báo C như một biến toàn cục. Theo mặc định, tất cả các biến bên trong hàm Python đều có phạm vi cục bộ. Và bạn không thể truy cập chúng từ bên ngoài chức năng. Để làm cho ma trận sản phẩm C có thể truy cập được từ bên ngoài, chúng tôi sẽ phải khai báo nó dưới dạng biến toàn cục. Chỉ cần thêm từ hạn định 6 trước tên biếnKiểm tra xem phép nhân ma trận có hợp lệ không. Sử dụng thuộc tính 7 để kiểm tra xem A và B có nhân được không. Đối với bất kỳ mảng nào 8, 9 và The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]30, lần lượt cung cấp số lượng hàng và cột. Vì vậy, The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]31 kiểm tra xem phép nhân ma trận có hợp lệ không. Chỉ khi điều kiện này là The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]32, ma trận sản phẩm sẽ được tính toán. Ngược lại, hàm trả về thông báo lỗi Sử dụng các vòng lặp lồng nhau để tính giá trị. Để tính toán các phần tử của ma trận kết quả, chúng ta phải lặp qua các hàng của ma trận A và vòng lặp The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]33 bên ngoài thực hiện điều này. Vòng lặp The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]33 bên trong giúp ta lặp qua cột của ma trận B. Và vòng lặp The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]33 trong cùng giúp truy xuất từng phần tử trong cột được chọn ▶️ Bây giờ chúng ta đã học cách hoạt động của hàm Python nhân ma trận, hãy gọi hàm với ma trận A và B mà chúng ta đã tạo trước đó The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]3 Khi phép nhân ma trận giữa A và B hợp lệ, hàm The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]36 trả về ma trận tích C Sử dụng khả năng hiểu danh sách lồng nhau của Python để nhân ma trậnTrong phần trước, bạn đã viết một hàm Python để nhân các ma trận. Bây giờ, bạn sẽ thấy cách bạn có thể sử dụng khả năng hiểu danh sách lồng nhau để làm điều tương tự Đây là cách hiểu danh sách lồng nhau để nhân ma trận Lúc đầu, điều này có vẻ phức tạp. Nhưng chúng tôi sẽ phân tích cú pháp hiểu danh sách lồng nhau từng bước Hãy tập trung vào một cách hiểu danh sách tại một thời điểm và xác định những gì nó làm Chúng tôi sẽ sử dụng mẫu chung sau đây để hiểu danh sách 1▶️ Hãy xem hướng dẫn của chúng tôi về Danh sách hiểu trong Python – với các ví dụ để hiểu sâu hơn
Giải thích về cách hiểu danh sách lồng nhauBước 1. Tính một giá trị duy nhất trong ma trận C Cho hàng i của ma trận A và cột j của ma trận B, biểu thức dưới đây đưa ra mục tại chỉ số (i, j) trong ma trận C 2Nếu The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]37, biểu thức sẽ trả về mục nhập The multiplication result of matrix A and B is: [37, 43, 59] [34, 58, 62] [58, 92, 103]38 của ma trận C. Vì vậy, bạn có thể lấy một phần tử trong một hàng theo cách này Bước 2. Dựng một hàng trong ma trận C Mục tiêu tiếp theo của chúng tôi là xây dựng toàn bộ một hàng Đối với hàng 1 trong ma trận A, bạn phải lặp qua tất cả các cột trong ma trận B để có một hàng hoàn chỉnh trong ma trận C Quay lại mẫu hiểu danh sách
Và đây là cách hiểu danh sách đầu tiên 0Bước 3. Xây dựng tất cả các hàng và thu được ma trận C Tiếp theo, bạn sẽ phải điền vào ma trận sản phẩm C bằng cách tính phần còn lại của các hàng Và để làm điều này, bạn phải lặp qua tất cả các hàng trong ma trận A Quay lại phần hiểu danh sách một lần nữa và làm như sau
Và đây là cách hiểu danh sách lồng nhau cuối cùng của chúng tôi. 🎊 5Đã đến lúc kiểm chứng kết quả. ✔ 6Nếu bạn nhìn kỹ hơn, điều này tương đương với các vòng lặp for lồng nhau mà chúng ta đã có trước đó—chỉ là nó ngắn gọn hơn Bạn cũng có thể làm điều này hiệu quả hơn bằng cách sử dụng một số hàm tích hợp. Hãy cùng tìm hiểu về chúng trong phần tiếp theo Sử dụng NumPy matmul() để nhân ma trận trong Python 18 lấy hai ma trận làm đầu vào và trả về kết quả nếu phép nhân ma trận giữa các ma trận đầu vào là hợp lệ 8Lưu ý cách phương pháp này đơn giản hơn hai phương pháp chúng ta đã học trước đó. Trên thực tế, thay vì 18, bạn có thể sử dụng toán tử @ tương đương và chúng ta sẽ thấy điều đó ngay sau đâyCách sử dụng toán tử @ trong Python để nhân ma trậnTrong Python, 20 là toán tử nhị phân được sử dụng để nhân ma trậnNó hoạt động trên hai ma trận và nói chung là các mảng NumPy N chiều và trả về ma trận tích
Đây là cách bạn có thể sử dụng nó 2Lưu ý rằng ma trận sản phẩm C giống như ma trận chúng ta đã thu được trước đó Bạn có thể sử dụng np. dot() để nhân ma trận?Nếu bạn đã từng gặp đoạn mã sử dụng 22 để nhân hai ma trận, thì đây là cách nó hoạt động 0Bạn sẽ thấy rằng 23 cũng trả về ma trận sản phẩm dự kiếnTuy nhiên, theo tài liệu NumPy, bạn chỉ nên sử dụng 22 để tính tích vô hướng của hai vectơ một chiều chứ không phải để nhân ma trận
Vì NumPy phát hoàn toàn hoạt động sản phẩm chấm này tới tất cả các hàng và tất cả các cột, bạn sẽ có được ma trận sản phẩm kết quả. Nhưng để giữ cho mã của bạn dễ đọc và tránh sự mơ hồ, thay vào đó hãy sử dụng toán tử 18 hoặc 20Phần kết luận🎯 Trong hướng dẫn này, bạn đã học được những điều sau
Và điều đó kết thúc phần thảo luận của chúng ta về phép nhân ma trận trong Python. Bước tiếp theo, hãy tìm hiểu cách kiểm tra xem một số có phải là số nguyên tố hay không trong Python. Hoặc giải các bài toán thú vị trên chuỗi Python Làm cách nào để nhân ma trận trong Python?3 cách nhân ma trận trong Python . Viết một hàm Python tùy chỉnh để nhân ma trận Sử dụng khả năng hiểu danh sách lồng nhau của Python để nhân ma trận Sử dụng NumPy matmul() để nhân ma trận trong Python Bạn có thể nhân ma trận 2x2 không?Chúng tôi nhân các phần tử của mỗi hàng của ma trận thứ nhất với các phần tử của mỗi cột trong ma trận thứ hai (từng phần tử) như trong hình. Cuối cùng, chúng tôi thêm các sản phẩm. Kết quả của tích hai ma trận 2x2 lại là ma trận 2x2 |