0
我目前使用嵌套for循環遍歷數組,以查找符合特定標準的值。問題是這種方法效率非常低,耗時。我被告知,更好的方法可能是基於數據對兩個數組進行排序,但這需要我組合幾個1D數組和一個多D數組,然後再將它們分開。有沒有更有效的方法來做到這一點?下面是我的代碼的示例:刪除嵌套for循環找到重合值
x1 = []
x2 = []
velocity = []
plane1Times = np.array([[2293902],[2848853],[482957]])
plane2Times = np.array([[7416504],[2613113],[2326542]])
plane1Local = np.array([[0,0,0],[0,u,0],[0,2*u,0],[u,0,0],[u,u,0],[u,2*u,0],[2*u,0,0],[2*u,u,0],[2*u,2*u,0],[3*u,0,0],[3*u,u,0],[3*u,2*u,0]],dtype='float')
plane2Local = np.array([[0,0,D],[0,u,D],[0,2*u,D],[u,0,D],[u,u,D],[u,2*u,D],[2*u,0,D],[2*u,u,D],[2*u,2*u,D],[3*u,0,D],[3*u,u,D],[3*u,2*u,D]],dtype='float')
for i in range(0,len(plane1Times)):
tic = time.time()
for n in range(0,len(plane2Times)):
if plane2Times[n] - plane1Times[i] <= 10000 and plane2Times[n] - plane1Times[i] > 0:
x1 = plane1Local[plane1Dets[i]]
x2 = plane2Local[plane2DetScale[n]]
distance = np.sqrt((x2[0]-x1[0])**2 + (x2[1]-x1[1])**2 + (x2[2])**2)
timeSeparation = (plane2Times[n]-plane1Times[i])*timeScale
velocity += distance/timeSeparation
break
爲了給你正在服用的時間的一個例子,次每個陣列爲10個** 6值長,從而環100在i
大約需要60秒。有人可以幫幫我嗎?
你可以分享你的陣列的內容? – AK47
每個數組都是長度爲10^6的一維數組。 – Adam
變量plane1Dets和plane2DScScale是1x10^6的數組,其值範圍從0到11. – Adam