2017-06-20 52 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

相关问题