使用SymPy执行Hadamard产品

신범준*_*신범준 1 sympy

我正在使用SymPy进行线性代数。我想在两个矩阵上执行逐元素乘法(Hadamard积)。

例如,

sympy.MatrixSymbol('X', 4, 3) [operator/method] sympy.MatrixSymbol('W', 4, 3)
Run Code Online (Sandbox Code Playgroud)

会给

[[X[0,0]*W[0,0], X[0,1]*W[0,1], ...],[X[1,0]*W[1,0], X[1,1]*W[1,1], ...]]
Run Code Online (Sandbox Code Playgroud)

但是似乎没有办法。有什么方法可以用SymPy执行逐元素乘法吗?

Uts*_*awn 5

是的,SymPy中有一个函数可以执行逐元素乘法(Hadamard乘积)。根据他们的SymPy 0.7.6文档,该函数是:

乘元素(b)

返回A和B的Hadamard乘积(元素乘积)。

例:

>>> from sympy.matrices import Matrix
>>> A = Matrix([[0, 1, 2], [3, 4, 5]])
>>> B = Matrix([[1, 10, 100], [100, 10, 1]])
>>> A.multiply_elementwise(B)
Matrix([
[  0, 10, 200],
[300, 40,   5]])
Run Code Online (Sandbox Code Playgroud)

更新:对于使用元素的乘法,请MatrixSymbols使用以下函数:

HadamardProduct(A,B)

例如:

>>> from sympy import HadamardProduct
>>> A = MatrixSymbol('A', m, n)
>>> B = MatrixSymbol('B', m, n)
>>>print(HadamardProduct(A,B))
A.*B
Run Code Online (Sandbox Code Playgroud)