使用SymPy执行Hadamard产品

时间:2015-02-27 16:41:49

标签: sympy

我正在使用SymPy来做线性代数。我想在两个matricies上执行逐元素乘法(Hadamard product)。

例如,

sympy.MatrixSymbol('X', 4, 3) [operator/method] sympy.MatrixSymbol('W', 4, 3)

会给出

[[X[0,0]*W[0,0], X[0,1]*W[0,1], ...],[X[1,0]*W[1,0], X[1,1]*W[1,1], ...]]

但似乎没有办法。有没有办法用SymPy执行元素乘法?

1 个答案:

答案 0 :(得分:3)

是的,SymPy中有一个可以进行逐元素乘法的函数(Hadamard产品)。根据他们的SymPy 0.7.6文档,功能是:

<强> multiply_elementwise(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]])

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

HadamardProduct(A,B)

例如:

>>> from sympy import HadamardProduct
>>> A = MatrixSymbol('A', m, n)
>>> B = MatrixSymbol('B', m, n)
>>>print(HadamardProduct(A,B))
A.*B