簡體   English   中英

Python - 被numpy的分段函數搞糊塗了

[英]Python — confused by numpy's piecewise function

我正在嘗試在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 -畢竟,這是沒有必要定義t了一個簡單的lambda函數Lin = lambda t : t 在一些示例中,定義了t的域,但是我不知道將評估LinQuad函數的值。 該怎么辦?

我不是一個笨拙的專家,但它看起來像你期待分段返回一個你可以在其他地方使用的功能。 這不是它的作用 - 它計算功能結果本身。 您可以編寫一個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])

np.piecewise要求您在調用時定義輸入域:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.piecewise.html

你無法真正了解如何指定方法。 雖然你可以使用lambda函數,但np.piecewise不會生成一個可以應用於任意域的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM