如何在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

回到顶部