2017-06-20 51 views
1

我有一個包含多個對象的時間間隔的字典,即實際上是一個二維數組,其中x軸的時間和y中的對象。我也有相同的形狀字典爲恆星通量值與那些時間去,最後我有一個字典包含恆星ID是一個字符串的一維數組。從字典中刪除元素,同時保持表格

隨着這些是'FLAG'值的字典,其中如果dic['FLAG'] != 0則相應的通量和時間值將被丟棄。

使用time_new = (dic['time'][np.where(dic['FLAG'] == 0.)])似乎要經過2D時間字典,將每個可接受的值附加到下一個末尾,而不是簡單地刪除那些不適合的值,並在整個2D數組形式中切除。

有沒有人有任何建議如何解決這樣的問題?非常感謝!

+0

使用一個'np.ma.MaskedArray'然後設置'.mask'屬性'DIC [ '標記' ] == 0.' – MSeifert

+0

感謝您的回覆!所以類似new_time = np.ma.MaskedArray(time,mask = dic ['FLAG'] == 0.)? – user8188120

+0

是的,至少如果所有後來的操作都支持被蒙版的陣列:) – MSeifert

回答

1

我不確定你的意思,所以我會給你一些可能的答案/提示。

#The dictionary 
A = {"a" : 1, "b" : 2} 

#N1 
A.popitem() 

#N2 
A.pop("a") 

#N3 
List = list(A.keys()) 
A.pop(List[(len(List) - 1)]) 

我希望你能從中得到一些有用的東西。

1

的簡單的方法:

import copy 
A = {'obj1':{'value':1,'time':{'FLAG':0}}, 
'obj2':{'value':1,'time':{'FLAG':1}}, 
'obj3':{'value':1,'time':{'FLAG':0}}, 
} 
B = copy.deepcopy(A) 
objs = B.keys() 
for obj in objs : 
    if B[obj]['time']['FLAG']==0: 
     del B[obj] 
print B 

結果是:

{'obj2': {'value': 1, 'time': {'FLAG': 1}}} 
+0

好吧,我看看你在那裏做什麼,也許我對字典的理解還沒有達到標準,但我的時間和標誌字典是彼此分開的,但是對於每次記錄,對於每個對象,標誌值都記錄在FLAGS字典中。所以我會查詢非零值的標誌字典,並從時間字典中刪除他們的座標等價值,如果這是有道理的? – user8188120

+0

@ user8188120是的,你有2字典。你總是可以使用del從字典中刪除一些項目。但我認爲使用熊貓而不是字典更好。 –

+0

好的,謝謝:)我認爲我需要更多地閱讀字典,但是我會嘗試讓我的頭腦圍繞上面添加的代碼 – user8188120

相關問題