我不知道如何开始这样做 它需要是一个for循环来乘以mtrixes
例如
[[1,2],[3,4]] * [[3,4],[5,6]]
[1,2],[3,4]
[3,4] * [5,6]
需要帮助非常感谢 我知道90%的人不想为我编码,所以没关系
它只需要是两个方阵
我很确定该模式是在列表中查看它
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]
答案 0 :(得分:2)
如果你看看矩阵乘法是如何工作的:
[ 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 ]
然后你可以确定一种计算方法,例如:如果要乘以输出矩阵的元素 i , j ,则需要将LHS矩阵的行 i 中的所有内容乘以所有内容在RHS矩阵的 j 列中,因此这是一个for循环(因为行 i 中的元素数等于列 j )。
您还需要覆盖 i 和 j 的每个组合,以获取输出矩阵的维度,这是嵌套在for循环中的列的for循环行。
当然,实际代码是您实施的练习。
答案 1 :(得分:2)
分解。在尝试编写一个乘以矩阵的函数之前,先写一个乘以向量的函数。如果你能做到这一点,那么将两个矩阵相乘只需要为结果矩阵的每个元素i,j乘以第i行和第j列。
答案 2 :(得分:1)
>>> 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]]
我认为你只需要简化矩阵乘法的公式。
我们有A * B = C然后: Cij =答案的第i行和第j列中的值。例如上面我们有C12 = 16和C11 = 13 ..(请注意,这是数组中的第0个位置,所以我们经常从0开始而不是1)
Cij = dot_product(row_i_of_A,column_j_of_B)= sum(row_i_of_A(v)* column_j_of_B(v)for v in range(n))
因为我们想要整个答案(全部是C),我们需要找出所有可能的Cij。这意味着我们需要尝试所有可能的对ij,所以我们在范围(n)中循环i,在范围(n)中循环j,并为每个可能的对执行此操作。
答案 3 :(得分:1)
result = [] # final result
for i in range(len(A)):
row = [] # the new row in new matrix
for j in range(len(B)):
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)
答案 4 :(得分:1)
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)
我认为当我们使用numpy模块时,append函数在二维数组中不起作用,所以这就是我解决的方法。
答案 5 :(得分:0)
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_[i])):
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