Matlab在Python中的内联函数

时间:2014-05-14 07:53:11

标签: python matlab numpy inline

在Matlab中,我们可以做到

x = -10:.1:10;
f = inline('normpdf(x,3,2) + normpdf(x,-5,1)','x');
t = plot(x,f(x))

我们在Python中有类似inline的功能吗?

4 个答案:

答案 0 :(得分:5)

我认为python相当于“Inline”将是lambda

 Matlab:
 f = inline('normpdf(x,3,2) + normpdf(x,-5,1)','x');

 python:
 f = lambda x : normpdf(x,3,2) + normpdf(x,-5,1)
 # Assuming that normpdf is defined and in scope ;-)

答案 1 :(得分:2)

是的,在iPython笔记本(也许是Enthought Canopy?)中,您可以使用“魔术功能”设置内联

% pylab inline

您必须重新启动内核才能使其生效(至少对于2.0之前的iPython笔记本版本)

答案 2 :(得分:0)

您可以使用eval,这是一项危险的功能(请参阅例如http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html):

from numpy import *
x = np.arange(0, pi, 0.1)
f = eval('sin') # fill in any function
y = f(x)

或者假设您的结尾中的变量总是被称为x

from numpy import *
x = np.arange(0, pi, 0.1)
y = eval('sin(x)')

答案 3 :(得分:0)

那是不一样的,因为lambda还有其他事情,我只想替换我在GRAD中变量F的值,但是使用'inline',这段代码是matlab的:

F= 3*X**2+2*X*Y+4*(Y-2)**2  
GRAD= inline([diff(F,X), diff(F,Y)])