假設我有在Python兩個列表:檢測1d列表值的交叉最簡單的方法是什麼?
a = [1, 2, 3, 4, 5, 6] # y values of a line
b = [7, 6, 4, 4, 8, 4] # x values are index location of the list
// result = [F, F, F, T, F, T]
現在,如果你能想象這些點代表2線,a和b。 線a線性上升(儘管那是任意的),而線b下降並首先接觸x = 4,並且跨過x = 6。
我想要做的是,有一個簡單的Pythonic解決方案,用於檢測線條是否觸摸或交叉。我想知道,如果numpy或其他圖書館已經可以做到這一點。
編輯: 我寫了這個裝置,我認爲它的工作原理就像檢測交叉點一樣。 aa <= bb;aa >= bb
也應該讓它檢測觸摸。
# check if lines crossed in past X bars
def cross(a, b, bars=3):
aa = np.array(a[-bars:])
bb = np.array(b[-bars:])
if len(np.unique(aa < bb)) == len(np.unique(aa > bb)) == 1:
return False
return True
可以改變'如果LEN(np.unique(AA BB))== 1:''中(A> B)。 any()和(b> a).any()'這是更快的。 –