如何在python中使用矩阵和向量的reduce/lambda函数?
我正在尝试使用函数式编程来编写以下函数。如何在python中使用矩阵和向量的reduce/lambda函数?
def mv(A,X,n): Y = [0]*n
for i in range(n):
for j in range(n):
Y[i] += A[i][j] * X[j]
return Y
减法函数可以将一个向量乘以一个矩阵吗?因为这是我在这里要做的。我正在尝试将矩阵A
与矢量X
相乘,但收到错误。错误是:
TypeError: 'function' object is not iterable
def mv(A,X,n): return list(map(sum,lambda x, y: x*y(A, X)))
要输入:
A = [[1,2],[3,4]] X = [1,2]
n = 2
print(mv(A,X,n))
输出应该是:
[5,11]
回答:
使用列表推导这里有一个快速和肮脏的解决方案,如果你想要坚持功能结构(在map
和之上的Python中受到理解):
import operator as op x = [[1],[2],[3]] # Notice the dimensions!
A = [[1,1,1],
[2,2,2],
[3,3,3]]
def matrix_mult(A, X):
return [
[sum(map(op.mul, row, col)) for col in zip(*X)]
for row in A
]
在行动中看到:
In [17]: A Out[17]: [[1, 1, 1], [2, 2, 2], [3, 3, 3]]
In [18]: x
Out[18]: [[1], [2], [3]]
In [19]: matrix_mult(A, x)
Out[19]: [[6], [12], [18]]
以上是 如何在python中使用矩阵和向量的reduce/lambda函数? 的全部内容, 来源链接: utcz.com/qa/261248.html