所以我想用一个向量乘以一个矩阵。 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: unsupported operand type(s) for +: 'int' and '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 中将 itertools.izip
替换为 zip
。)
关于python - python中的向量矩阵乘法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504167/