在非首个变量上积分函数,寻找替代lambda的方法
有没有其他方法可以在Python 2.7中对一个函数进行积分,比如说对两个变量中的第二个变量进行积分?举个例子,我想对这个函数在x上进行积分:
import numpy as np
from scipy.integrate import quad
def sqrfn(a,x):
return a*np.square(x)
这可以很简单地通过以下方式实现:
quad(lambda x: sqrfn(2,x),0,10)
我在想有没有其他方法可以做到这一点,比如使用一些我觉得更直观的方式:
quad(sqrfn,0,10,args(a=2))
有没有人有其他的解决方案?(是的,我可以把这个函数定义为 sqrfn(x,a)
,然后用 quad(sqrfn,0,10,args(2,))
来代替,但这不是重点)。
2 个回答
0
在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们通常需要把它们转换成一种程序能处理的格式。
比如说,如果你从一个网页上获取了一些信息,这些信息可能是以文本的形式存在的。为了让程序能够使用这些信息,我们需要把它们解析成程序可以理解的结构,比如列表或者字典。
这个过程就像是把外语翻译成你能懂的语言一样。你需要知道每个词的意思,才能把整个句子翻译得通顺。
在编程中,解析数据的方式有很多种,具体取决于你要处理的数据类型和来源。常见的格式有JSON、XML等,它们各自有自己的规则和结构。
总之,处理数据的关键在于理解数据的格式,并使用合适的方法将其转换成程序可以使用的形式。
import functools
quad(functools.partial(sqrfn, 2), 0, 10)
1
你可以使用 functools.partial()
来实现这个功能:
In [10]: f = functools.partial(sqrfn, 2)
这样一来,f(x)
就等于 sqrfn(2, x)
了:
In [11]: map(f, range(5))
Out[11]: [0, 2, 8, 18, 32]
你的例子就可以变成:
quad(functools.partial(sqrfn, 2), 0, 10)