python - python中的向量矩阵乘法?

标签 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

这不是我的,但那是我在生气并删除它之前编码的。错误是这样的: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/

相关文章:

python - Datadog Dogstream 自定义解析器错误

python - 安装较低版本的 GLIBC 并运行 pyinstaller

python - python 和 GUI 测试中的包内引用

c++ - 如何有效地从给定另一个 vector 的 vector 中删除元素

python - 定位 libmysqlclient_r.so.16 issue

c++ - 在基于范围的循环与标准循环中删除 vector 元素

由于互斥体,C++ vector 删除迭代器超出范围

matrix - LAPACK/BLAS 或其他地方是否有 Fortran 子例程来计算 LDL 分解?

r - 移动表格中的位置 - R

algorithm - 存在大小为 NxN 的 Hadamard 矩阵