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 đồngPhá 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