In [6]: M = sympy.Matrix(sympy.symbols('a b c d'))
In [7]: M.applyfunc(sympy.log)
Out[7]:
⎡log(a)⎤
⎢ ⎥
⎢log(b)⎥
⎢ ⎥
⎢log(c)⎥
⎢ ⎥
⎣log(d)⎦
您不能使用 np.log ,因为它会执行数字日志,但您需要符号版本,即 sympy.log .
3
如果你想要一个元素对数,并且你的矩阵都是单列的,你应该只能使用列表推导:
>>> m = sympy.Matrix(sympy.symbols('a b c d'))
>>> logm = sympy.Matrix([sympy.log(x) for x in m])
>>> logm
Matrix([
[log(a)],
[log(b)],
[log(c)],
[log(d)]])
这有点难看,但你可以把它包装在一个功能中以方便,例如:
>>> def sp_log(m):
return sympy.Matrix([sympy.log(x) for x in m])
>>> sp_log(m)
Matrix([
[log(a)],
[log(b)],
[log(c)],
[log(d)]])
2 回答
使用
Matrix.applyfunc
:您不能使用
np.log
,因为它会执行数字日志,但您需要符号版本,即sympy.log
.如果你想要一个元素对数,并且你的矩阵都是单列的,你应该只能使用列表推导:
这有点难看,但你可以把它包装在一个功能中以方便,例如: