我正在使用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执行元素乘法?
答案 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