python中的向量矩阵乘法?

Amm*_*mar 1 python vector matrix multiplication

所以我试图将矩阵乘以向量.并且python继续抛出错误.这是我正在尝试的代码:

def matmult(m, v):
    rows = len(m)
    w = [0]*rows
    irange = range(len(v))
    sum = 0
    for j in range(rows):
        r = m[j]
        for i in irange:
            sum += r[i]*v[i]
    w[j],sum = sum,0
return w
Run Code Online (Sandbox Code Playgroud)

这不是我的,但这是我生气之前编码并删除它.错误是这样的:TypeError:+:'int'和'list'的不支持的操作数类型

我猜测python将向量视为int或列表,并且由于类型的不同而不会执行任何基本运算符.有办法解决这个问题吗?不幸的是我不能使用Numpy.

Dou*_*gal 5

对于纯python矩阵时间向量乘法,这是一种不同的,更短的方法:

 import operator
 import itertools

 def dot(x, y):
     assert len(x) == len(y)
     return sum(itertools.starmap(operator.mul, itertools.izip(x, y)))

 def matmult(m, v):
     return [dot(row, v) for row in m]
Run Code Online (Sandbox Code Playgroud)

(这是用于python 2 - itertools.izipzip用python 3 替换.)

  • @Ammar你能否至少奖励这个用户并接受他的答案或者只是发布你自己的答案而不是打开这个问题? (2认同)