【发布时间】:2014-05-14 07:53:10
【问题描述】:
在Matlab中,我们可以做到
x = -10:.1:10;
f = inline('normpdf(x,3,2) + normpdf(x,-5,1)','x');
t = plot(x,f(x))
我们有类似 Python 中的 inline 的函数吗?
【问题讨论】:
标签: 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 的函数吗?
【问题讨论】:
标签: python matlab numpy inline
我认为“内联”的 python 等效项是 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 ;-)
【讨论】:
是的,在 iPython 笔记本(可能还有 Enthought Canopy?)中,您可以使用“魔术函数”设置内联
% pylab inline
您必须重新启动内核才能使其生效(至少对于 2.0 之前的 iPython 笔记本版本)
【讨论】:
您可以使用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)')
【讨论】:
这是不一样的,因为 lambda 做其他事情,我只想替换我的变量 F 在 GRAD 中的值,但使用“内联”,这段代码是 matlab 的:
F= 3*X**2+2*X*Y+4*(Y-2)**2
GRAD= inline([diff(F,X), diff(F,Y)])
【讨论】: