Python-被numpy的分段函数弄糊涂了

Python-被numpy的分段函数弄糊涂了,python,numpy,lambda,piecewise,Python,Numpy,Lambda,Piecewise,我试图用Python实现一个分段函数。因为我使用了很多来自numpy的工具,所以我只需从它导入所有东西,即从numpy导入*。我的分段函数定义为 LinQuad = piecewise( t, [t < 1, t >= 1], [lambda t : t, lambda t : t**2] ) 这将导致错误名称错误:未定义全局名称“t”。我不明白为什么要定义t——毕竟,对于一个简单的lambda函数Lin=lambda t:t,没有必要定义t。在一些示例中,定义了t的域,但我不知道

我试图用Python实现一个分段函数。因为我使用了很多来自numpy的工具,所以我只需从它导入所有东西,即从numpy导入*。我的分段函数定义为

LinQuad = piecewise( t, [t < 1, t >= 1], [lambda t : t, lambda t : t**2] )
这将导致错误名称错误:未定义全局名称“t”。我不明白为什么要定义t——毕竟,对于一个简单的lambda函数Lin=lambda t:t,没有必要定义t。在一些示例中,定义了t的域,但我不知道函数LinQuad将在哪个值上求值。怎么办?

np.分段要求您在调用输入域时定义输入域:

您无法真正了解该方法是如何指定的。虽然可以使用lambda函数,但np.pieclewise不会生成可应用于任意域的方法。

np.pieclewise要求您在调用输入域时定义输入域:


您无法真正了解该方法是如何指定的。虽然您可以使用lambda函数,但np.pieclewise不会生成一个可以应用于任意域的方法。

我不是numpy专家,但在我看来,您希望分段返回一个可以在其他地方使用的函数。它不是这样做的——它自己计算函数结果。您可能会编写一个lambda表达式,该表达式将接受任意域并返回对该域的计算:

LinQuad = lambda x: piecewise(x, [x < 1, x >= 1], [lambda t: t, lambda t: t**2])
我对在那里定义condlist布尔数组不太确定——可能这是numpy特有的

或者,如果适合您的情况:

def LinQuad(x):
   return piecewise(x, [x < 1, x >= 1], [lambda t: t, lambda t: t**2])

我不是numpy专家,但在我看来,您希望分段返回一个可以在其他地方使用的函数。它不是这样做的——它自己计算函数结果。您可能会编写一个lambda表达式,该表达式将接受任意域并返回对该域的计算:

LinQuad = lambda x: piecewise(x, [x < 1, x >= 1], [lambda t: t, lambda t: t**2])
我对在那里定义condlist布尔数组不太确定——可能这是numpy特有的

或者,如果适合您的情况:

def LinQuad(x):
   return piecewise(x, [x < 1, x >= 1], [lambda t: t, lambda t: t**2])

谢谢知道LinQuad将在0到4之间的某个值上求值就足够了吗?或者我必须知道LinQuad将被计算的确切值吗?换句话说,我如何准确定义输入域?谢谢。知道LinQuad将在0到4之间的某个值上求值就足够了吗?或者我必须知道LinQuad将被计算的确切值吗?换句话说,,如何准确定义输入域?没有必要为一个简单的lambda函数Lin=lambda t:t定义t-这是因为lambda t:是一个在表达式范围内定义t的python语言构造。没有必要为一个简单的lambda函数Lin=lambda t:t定义t-这是因为lambda t:是一个python在表达式范围内定义t的语言构造