2016-09-10 110 views
1

任何人都可以幫助我嗎?這是一個複雜的問題,但我會嘗試解釋它。我需要插兩個值深淵(Z),以速度(V)的所有數據python list columns split

x= [55,55,55,,44,44,44,,33,33,33,] (coordinates) 
z =[10,5,0,10,7,0,10,9,0] (depths) 
v= [20,21,22=,23,24,25,26,27,28] (speed) 

,並導致

DEPTHS SPEED(55)  SPEED(44)    SPEED(33)  
10  20    23      26 
6  21.5(interp) 24.5(interp)   27.5 (interp) 
0  22    25      28 

我做了什麼:

import numpy as np 
    X_list=[55,55,55,44,44,44,33,33,33] 
    Z_list=[10,5,0,10,7,0 10,9,0] 
    V_list=[20,21,22,23,24,25,26,27,28] 
    x = np.linspace(min(Z_list),max(Z_list),num = 3) #(Find min and max values in all list, and put step 
    d=np.interp(x, Z_list, V_list) # interpolation for interesting depths 
    zipped = list(zip(x,d)) 
    print (*zipped, sep="\n") 

而實際上我是從得到的信息第一配套

DEPTHS SPEED(55) SPEED (44)  SPEED(33)  

    (10  20)   ?    ? 
    (6  21.5)  ?    ? 
    (0  22)   ?    ? 

但我不知道如何從其他同伴身上獲得其他價值。 我還沒有任何想法如何鏈接座標速度和深度,並將其放置到列。

回答

1

一種可能性是創建每個X座標映射到與X座標元組的列表的字典:

>>> tupus = [ (1,0,1), (1,13,4), (2,11,2), (2,14,5) ] 
>>> from collections import defaultdict 
>>> tupudict = defaultdict(lambda: []) # default val for a key is empty list 
>>> for tupu in tupus: tupudict[tupu[0]].append(tupu) 
... 
>>> tupudict[1] 
[(1, 0, 1), (1, 13, 4)] 
>>> tupudict[2] 
[(2, 11, 2), (2, 14, 5)] 

然後你處理由密鑰字典鍵,或轉儲值到列表元組列表,或其他。

編輯成一個答案添加到您的評論對剛剛拆分列表:

>>> from collections import defaultdict 
>>> mylist = [11,11,11,11,12,12,15,15,15,15,15,15,20,20,20] 
>>> uniquedict = defaultdict(lambda: []) 
>>> for n in mylist: uniquedict[n].append(n) 
... 
>>> uniquedict 
defaultdict(<function <lambda> at 0x00000000033092E8>, {20: [20, 20, 20], 11: [11, 11, 11, 11], 12: [12, 12], 15: [15, 15, 15, 15, 15, 15]}) 
>>> uniquedict[11] 
[11, 11, 11, 11] 

需要注意的是,在您的輸入列表中的每個N,uniquedict [n]是現在所有n的從你的列表輸入列表。

+0

這太複雜了我更新了這個問題=) –

+0

如果我瞭解你,我仍然認爲我的想法會工作得很好。但是也許我誤解了你正在做的事情。祝你好運! –

+0

這段代碼完美無缺。但我需要一點不同的東西。因爲我有gor座標,他們是公佈的。 55,55,54,44,44,33,33,33 對於每個座標,我都有SPEED和DEPTHS列。 所以我認爲一開始我應該將座標列表排列並將其與深度和速度聯繫起來。喜歡的東西 №55砂壤土加快 (10,6,0)20,21,22 №44砂壤土加快 (10,5,0)23,24,25 №33砂壤土加快 (10,4,0 )26,27,28 –