更具体地说,我想应用以下 sigmoid 函数:
def sigmoid(x):
return 1 / (1 + m.exp(-x))
以下 2x2 Sympy 矩阵的每个元素:
Matrix([[1,3],[2,4]])
Matrix([
[1, 3],
[2, 4]])
这样,在将 sigmoid 函数应用到矩阵上时,我将得到一个新的 2x2 矩阵,其中矩阵的每个单独元素都应用了 sigmoid 函数。就像下面这样:
Matrix([[ sigmoid(1), sigmoid(3) ],[ sigmoid(2), sigmoid(4) ]])
如何做到这一点?
最佳答案
>>> M.applyfunc(sigmoid)
Matrix([
[1/(exp(-1) + 1), 1/(exp(-3) + 1)],
[1/(exp(-2) + 1), 1/(exp(-4) + 1)]])
这是在 sigmoid
函数中使用 SymPy 的 exp
。如果 m.exp
意味着您要从 math
导入 exp
,那么结果看起来不太好,并且如果矩阵包含符号。
如果您确实想要在函数内部使用 sigmoid(1)
等,那么 sigmoid
需要是一个不计算任何内容的 SymPy 函数。
class sigmoid(Function):
pass
有了这个,
>>> M.applyfunc(sigmoid)
Matrix([
[sigmoid(1), sigmoid(3)],
[sigmoid(2), sigmoid(4)]])
关于python-3.x - 在 python sympy 中,如何将外部 python 函数应用于 sympy 矩阵的每个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49503662/