矩阵向量乘法Python3

时间:2018-06-10 03:52:37

标签: python python-3.x

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

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))

link to code

1 个答案:

答案 0 :(得分:1)

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

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

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

14