我试图在Python中实现一个分段函数。因为我使用了很多来自numpy的工具,所以我只需从中导入所有内容(即from numpy import *
)。我的分段函数定义为
LinQuad = piecewise( t, [t < 1, t >= 1], [lambda t : t, lambda t : t**2] )
这会导致错误NameError: global name 't' is not defined
。我不明白为什么要定义t
-毕竟,没有必要为简单的lambda函数定义Lin = lambda t : t
。在一些例子中,定义了t
的域,但我不知道函数LinQuad
将在哪个值上求值。怎么办?
我不是numpy专家,但在我看来,您希望分段返回一个函数,然后可以在其他地方使用。这不是它所做的-它自己计算函数结果。您可能可以编写一个lambda表达式,该表达式将接受任意域并返回对该域的计算:
我不太确定是否要在那里定义condlist布尔数组——可能这是numpy特有的。
或者如果适合你的情况:
np.piecewise
要求在调用输入域时定义它:http://docs.scipy.org/doc/numpy/reference/generated/numpy.piecewise.html
你真的不能回避如何指定方法。虽然可以使用lambda函数,但
np.piecewise
不会生成可随后应用于任意域的方法。相关问题 更多 >
编程相关推荐