繁体   English   中英

Python中的矢量矩阵乘法?

[英]Vector Matrix multiplication in python?

因此,我尝试将矩阵乘以向量。 而且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

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

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

这是纯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]

(这是针对python 2的-用python 3中的zip替换itertools.izip

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM