首页 > 解决方案 > 矩阵向量乘法 Python3

问题描述

这是我到目前为止编写的代码,但我没有得到我想要的输出。我想知道代码中缺少什么。任何帮助将不胜感激。

def matVec(matrix,vector): 
  for i in range(len(matrix)): 
    result = [] 
    total = 0 
    for j in range(len(vector)): 
      total += matrix[i][j] * vector[j] 
  result.append(total) 
  return result 
matrix_0 = [[1, 2, 3],[2, 3, 4]] 
vector_0 = [2, 2] 
print(matVec(matrix_0,vector_0))

链接到代码

标签: pythonpython-3.x

解决方案


这就是诀窍。错误在于您声明原始矩阵的方式。特别是,您必须声明对行中的元素进行分组的矩阵,而不是像开始代码中那样在列中的元素

您将对matrix[column] 的元素的行上的元素相乘vector,以遵守乘法矩阵与向量的规则。给定一个大小为a[= 行大小,在您的情况下为 3] x b[= 列大小,在您的情况下为 2] 的矩阵,您的向量的行数必须等于b[= 在您的情况下为 2]。给定您的 2 x 1 向量,最终结果将是 3 x 1 向量

现在,当您运行代码时len(matrix),应该返回 3。如果您运行原始版本,您将 2 作为值返回,这会阻止最后一次计算得到结果向量的剩余第三个元素 [即 final 14]

def matVec(matrix,vector):
  result = []
  for i in range(len(matrix)):
    total = 0    
    for j in range(len(vector)):
      total += matrix[i][j] * vector[j]
    result.append(total)
  return result

matrix_0 = [[1, 2],[2, 3],[3, 4]]
vector_0 = [2, 2]
print(matVec(matrix_0,vector_0))

推荐阅读