Hướng dẫn matrix multiplication in python using loops - phép nhân ma trận trong python sử dụng vòng lặp

3

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi không biết làm thế nào để bắt đầu làm điều này, nó cần phải là một vòng lặp để nhân mtrixes

Ví dụ

[[1,2], [3,4]] * [[3,4], [5,6]]

[1, 2], [3, 4]

[3, 4] *[5, 6]

Cần trợ giúp nhiều đánh giá cao Tôi biết 90% không muốn viết mã cho tôi nên điều đó ổn

Nó chỉ cần là hai ma trận vuông

Tôi khá chắc chắn rằng mô hình đang nhìn vào nó trong danh sách

a[1][1]*b[1][1]+a[1][2]*b[2][1]       a[1][1]b[1][2]+a[1][2]b[2][2]

a[2][1]b[1][1]+a[2][2]b[2][1]         a[2][1]b[1][2]+a[2][2]b[2][2]

Đã hỏi ngày 3 tháng 9 năm 2011 lúc 2:12Sep 3, 2011 at 2:12

Jimbobjimbobjimbob

4512 Huy hiệu vàng8 Huy hiệu bạc17 Huy hiệu đồng2 gold badges8 silver badges17 bronze badges

5

result = [] # final result
for i in range[len[A]]:

    row = [] # the new row in new matrix
    for j in range[len[B[0]]]:
        
        product = 0 # the new element in the new row
        for v in range[len[A[i]]]:
            product += A[i][v] * B[v][j]
        row.append[product] # append sum of product into the new row
        
    result.append[row] # append the new row into the final result


print[result]

Jim Pivarski

5.1921 Huy hiệu vàng34 Huy hiệu bạc44 Huy hiệu đồng1 gold badge34 silver badges44 bronze badges

Đã trả lời ngày 20 tháng 6 năm 2015 lúc 4:33Jun 20, 2015 at 4:33

Aaron Shenaaron ShenAaron Shen

7.88410 Huy hiệu vàng42 Huy hiệu bạc83 Huy hiệu đồng10 gold badges42 silver badges83 bronze badges

Phá vỡ nó. Trước khi bạn cố gắng viết một hàm nhân lên ma trận, hãy viết một hàm nhân lên các vectơ. Nếu bạn có thể làm điều đó, việc nhân hai ma trận chỉ là vấn đề nhân hàng I và cột J cho mỗi phần tử I, J của ma trận kết quả.

Đã trả lời ngày 3 tháng 9 năm 2011 lúc 2:29Sep 3, 2011 at 2:29

CalebcalebCaleb

123K19 Huy hiệu vàng182 Huy hiệu bạc269 Huy hiệu Đồng19 gold badges182 silver badges269 bronze badges

1

Nếu bạn nhìn vào cách phép nhân Matrix hoạt động:

[ 1 2 ] x [ 5 6 ] = [ 1*5+2*7 1*6+2*8 ]
[ 3 4 ]   [ 7 8 ]   [ 3*5+4*7 3*6+4*8 ]

Sau đó, bạn có thể xác định một phương thức để tính toán điều này, ví dụ: Nếu bạn đang nhân cho phần tử I, J của ma trận đầu ra, thì bạn cần nhân mọi thứ theo hàng Ma trận LHS với mọi thứ trong cột J của ma trận RHS, vì vậy đó là một vòng duy nhất [là số lượng các phần tử trong hàng i bằng cột j].

Bạn cũng cần bao gồm mọi kết hợp của I và J cho các kích thước của ma trận đầu ra, đây là vòng lặp cho các cột lồng bên trong một vòng lặp cho các hàng.

Tất nhiên, mã thực tế là một bài tập để bạn thực hiện.

Caleb

123K19 Huy hiệu vàng182 Huy hiệu bạc269 Huy hiệu Đồng19 gold badges182 silver badges269 bronze badges

Nếu bạn nhìn vào cách phép nhân Matrix hoạt động:Sep 3, 2011 at 2:22

2

>>> A=[[1,2],[3,4]]
>>> B=[[3,4],[5,6]]
>>> n=2
>>> ans=[[0]*n for i in range[n]]
>>> ans
[[0, 0], [0, 0]]
>>> for i in range[n]:
...     for j in range[n]:
...             ans[i][j]=sum[[A[i][v]*B[v][j] for v in range[n]]]
... 
>>> ans
[[13, 16], [29, 36]]

Sau đó, bạn có thể xác định một phương thức để tính toán điều này, ví dụ: Nếu bạn đang nhân cho phần tử I, J của ma trận đầu ra, thì bạn cần nhân mọi thứ theo hàng Ma trận LHS với mọi thứ trong cột J của ma trận RHS, vì vậy đó là một vòng duy nhất [là số lượng các phần tử trong hàng i bằng cột j].

Bạn cũng cần bao gồm mọi kết hợp của I và J cho các kích thước của ma trận đầu ra, đây là vòng lặp cho các cột lồng bên trong một vòng lặp cho các hàng.

Tất nhiên, mã thực tế là một bài tập để bạn thực hiện.

Caleb

Đã trả lời ngày 3 tháng 9 năm 2011 lúc 2:22Sep 3, 2011 at 3:26

Tôi nghĩ rằng bạn chỉ cần đơn giản hóa công thức nhân ma trận.Rusty Rob

Chúng ta có một*b = c sau đó: cij = giá trị trong hàng iTh và cột thứ j của câu trả lời. Ví dụ: chúng ta có C12 = 16 và C11 = 13 .. [Lưu ý rằng đây là vị trí thứ 0 trong mảng thường xuyên chúng ta bắt đầu từ 0 thay vì 1]8 gold badges94 silver badges111 bronze badges

from numpy import *
m1 = array[[[1, 2, 3],[4, 5, 6] ]]
m2 = array[[[7, 8],[9, 10],[11, 12]]]
r = array[[[0, 0],[0, 0]]]
s = 0
for i in range[2]:
    for j in range[2]:
        for k in range[3]:
            s = s + m1[i][k]*m2[k][j]

        r[i][j] = s
        s = 0
print[r]

Cij = dot_product [row_i_of_a, cột_j_of_b] = sum [row_i_of_a [v]*cột_j_of_b [v] cho v trong phạm vi [n]]

Bởi vì chúng tôi muốn toàn bộ câu trả lời [tất cả C], chúng tôi cần phải tìm ra tất cả các CIJ có thể. Điều này có nghĩa là chúng ta cần thử tất cả các cặp IJ có thể, vì vậy chúng ta lặp qua I trong phạm vi [n], j trong phạm vi [n] và làm điều này cho mỗi cặp có thể.Jul 12, 2019 at 11:15

def matmul[matrix1_,matrix2_]:
    result = [] # final result

    for i in range[len[matrix1_]]:

        row = [] # the new row in new matrix
        for j in range[len[matrix2_[0]]]:

            product = 0 # the new element in the new row

            for v in range[len[matrix1_[i]]]:
                 product += matrix1_[i][v] * matrix2_[v][j]
            row.append[product] # append sum of product into the new row

        result.append[row] # append the new row into the final result
    return result

Jim Pivarski

5.1921 Huy hiệu vàng34 Huy hiệu bạc44 Huy hiệu đồng1 gold badge34 silver badges44 bronze badges

Đã trả lời ngày 20 tháng 6 năm 2015 lúc 4:33Oct 12, 2018 at 10:40

Aaron Shenaaron Shen

7.88410 Huy hiệu vàng42 Huy hiệu bạc83 Huy hiệu đồng

Phá vỡ nó. Trước khi bạn cố gắng viết một hàm nhân lên ma trận, hãy viết một hàm nhân lên các vectơ. Nếu bạn có thể làm điều đó, việc nhân hai ma trận chỉ là vấn đề nhân hàng I và cột J cho mỗi phần tử I, J của ma trận kết quả.Dec 4, 2021 at 18:02

Có bao nhiêu vòng được yêu cầu để nhân ma trận?

Điều này đòi hỏi ba vòng lồng nhau.Vòng ngoài đi qua các hàng M của A. Đối với mỗi hàng I, một vòng khác phải đạp qua các cột N của B. Đối với mỗi cột, tạo thành tổng các sản phẩm của các phần tử tương ứng từ hàng I của A và cột J của B.three nested loops. The outer loop traverses the m rows of A. For each row i, another loop must cycle through the n columns of B. For each column, form the sum of the products of corresponding elements from row i of A and column j of B.

Làm thế nào để bạn nhân một ma trận với một mảng trong Python?

Có ba cách chính để thực hiện phép nhân ma trận numpy:..
DOT [mảng A, mảng B]: Trả về sản phẩm vô hướng hoặc dấu chấm của hai mảng ..
Matmul [Array A, Array B]: Trả về sản phẩm ma trận của hai mảng ..
Nhân [mảng A, mảng B]: Trả về phép nhân ma trận phần tử của hai mảng ..

Làm thế nào để bạn nhân một số trong một ma trận trong Python?

Phép nhân ma trận bằng thư viện Numpy..
Phương thức matmul [] hoặc toán tử@@..
nhân [] phương thức ..

Bài Viết Liên Quan

Chủ Đề