如何使Sympy lambdify(ed)函数接受数组输入?

大卫·尼弗德(David Neiferd)

我正在尝试在Python 2.7中创建一个函数,该函数接受函数句柄和函数中的变量数作为输入,并返回一个新函数,该函数计算输入函数的梯度。到目前为止,这就是我所拥有的。

import sympy as sym
import numpy as np

def getSymbolicGradient(func,numVars):
    # Initialize Some Variables
    g = numVars * [0]

    # Create All the Symbolic Variables
    x = sym.symarray('x',numVars)

    # Calculate the Gradients
    for i in range(numVars):
        g[i] = sym.diff(func(x),x[i])

    gradFunc = sym.lambdify(x, g, modules="numpy")

    return gradFunc

说我使用gradFunc以下代码:

def myVecFunc(x):
    return 2*x[0]**2 + 4*x[1] + 2

gradFunc = getSymbolicGradient(func=myVecFunc, numVars=2)

如果我使用两个单独的参数调用它,则它可以正常工作,例如:

print( gradFunc(1,2) )

但是,如果我使用单个参数(例如Numpy数组)来调用它,

print( gradFunc(np.array([1,2])) )

我收到以下错误:

TypeError:()正好接受2个参数(给定1个)

如何获得lambdify输入参数作为单个值内部的单个数组?是否有更好的(内置)Sympy方法来为将数组作为输入的函数的梯度生成符号表达式?

音频花花公子

我对numpy不太熟悉,但是通常在Python中,您可以使用*运算符解压缩数组值。

a = [2, 4, 6]
my_func(*a)

在逻辑上等同于

a = 2
b = 4
c = 6
my_func(a, b, c)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Sympy Lambdify与数组输入

来自分类Dev

如何在SymPy中定义数学函数?

来自分类Dev

如何使用sympy定义条件函数?

来自分类Dev

如何告诉SymPy变量是时间的函数?

来自分类Dev

sympy lambdify:如何提供更多功能(NCDF,NPDF等)

来自分类Dev

sympy lambdify:如何提供更多功能(NCDF,NPDF等)

来自分类Dev

sympy lambdify与元组中的函数参数?

来自分类Dev

如何使用带有Max函数的sympy.lambdify替代numpy.maximum而不是numpy.amax?

来自分类Dev

如何使接受元组输入的Python函数?

来自分类Dev

SymPy:使用2-D输入进行lambdify

来自分类Dev

SymPy用dot()lambdify

来自分类Dev

如何在Sympy中找到函数的最大值?

来自分类Dev

如何在Sympy中快速求幂函数

来自分类Dev

如何在sympy中编写以符号向量为参数的函数?

来自分类Dev

导入所有Sympy函数时,如何使lambda成为符号?

来自分类Dev

如何使用 SymPy 评估具有指数的单变量函数?

来自分类Dev

如何在 sympy 中更改函数导数的打印表示

来自分类Dev

分段函数和numpy模块的sympy.lambdify错误

来自分类Dev

如何指定一个可以接受boost :: bind'ed函数的c ++函数指针

来自分类Dev

如何让函数接受所有类型的数组

来自分类Dev

Sympy用numexpr lambdify ImmutableDenseMatrix

来自分类Dev

如何cCythonize接受容器作为返回结果的输入的C ++函数

来自分类Dev

当Python 3接受用户输入时,如何执行函数?

来自分类Dev

如何让我的函数接受不同类型的输入?

来自分类Dev

如何理解这个函数接受数字作为输入并反转它们?

来自分类Dev

使用Sympy lambdify函数实例化贝塞尔函数时出错

来自分类Dev

Sympy:lambdify使得对数组的操作总会导致数组,也对于常量?

来自分类Dev

如何识别哪个数学函数生成了由Sympy中的X和Y数组给定的曲线

来自分类Dev

如何接受 CGFloat 或 CGFloats 数组作为函数参数?

Related 相关文章

  1. 1

    Sympy Lambdify与数组输入

  2. 2

    如何在SymPy中定义数学函数?

  3. 3

    如何使用sympy定义条件函数?

  4. 4

    如何告诉SymPy变量是时间的函数?

  5. 5

    sympy lambdify:如何提供更多功能(NCDF,NPDF等)

  6. 6

    sympy lambdify:如何提供更多功能(NCDF,NPDF等)

  7. 7

    sympy lambdify与元组中的函数参数?

  8. 8

    如何使用带有Max函数的sympy.lambdify替代numpy.maximum而不是numpy.amax?

  9. 9

    如何使接受元组输入的Python函数?

  10. 10

    SymPy:使用2-D输入进行lambdify

  11. 11

    SymPy用dot()lambdify

  12. 12

    如何在Sympy中找到函数的最大值?

  13. 13

    如何在Sympy中快速求幂函数

  14. 14

    如何在sympy中编写以符号向量为参数的函数?

  15. 15

    导入所有Sympy函数时,如何使lambda成为符号?

  16. 16

    如何使用 SymPy 评估具有指数的单变量函数?

  17. 17

    如何在 sympy 中更改函数导数的打印表示

  18. 18

    分段函数和numpy模块的sympy.lambdify错误

  19. 19

    如何指定一个可以接受boost :: bind'ed函数的c ++函数指针

  20. 20

    如何让函数接受所有类型的数组

  21. 21

    Sympy用numexpr lambdify ImmutableDenseMatrix

  22. 22

    如何cCythonize接受容器作为返回结果的输入的C ++函数

  23. 23

    当Python 3接受用户输入时,如何执行函数?

  24. 24

    如何让我的函数接受不同类型的输入?

  25. 25

    如何理解这个函数接受数字作为输入并反转它们?

  26. 26

    使用Sympy lambdify函数实例化贝塞尔函数时出错

  27. 27

    Sympy:lambdify使得对数组的操作总会导致数组,也对于常量?

  28. 28

    如何识别哪个数学函数生成了由Sympy中的X和Y数组给定的曲线

  29. 29

    如何接受 CGFloat 或 CGFloats 数组作为函数参数?

热门标签

归档