python-3.x - 在 python sympy 中,如何将外部 python 函数应用于 sympy 矩阵的每个元素?

标签 python-3.x sympy

更具体地说,我想应用以下 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/

相关文章:

python - 如何解决sympy中的 "Absolute values cannot be inverted in the complex domain"错误

python - Sympy:使用符号表达式作为数值被积函数

python - 使用 bs4 在类中选择一个标签

mysql - 新 Python 3.mySQL 安装用户访问被拒绝

python - Pandas 从 concat() 中按键切片

python - 将 sympy 结果作为三角函数而不是复杂的日志

python - 将值累积到字典中的相应键?

python-3.x - [ :] in overwriting a list in a for loop? 的作用是什么

python - sy.sympify(str(expression)) 不等于表达式

python - 使用 lamdify 添加两个 numpy 数组 - 将表达式作为函数参数传递