2014-07-23 46 views
1

所以我有两个名为A和C的列表,每个列表中都存储相同数量的数据点。我创建了一个名为E的新列表,其中包含C中大于400的值。如何获得两个列表中的相应值

我需要绘制E和A的图 我的问题是如何获得创建对应的值E从列表A中,以便我可以制作一个情节?

有没有办法从A获取与E对应的数据,这可能会创建一个我可以绘制的新列表?谢谢。

我使用的数据是相当的大名单,但这里有一个例子:

xpos,ypos,measurement,error 
    96.54, 92.10, 236.69, 23.67 
    26.26, 17.36, 457.55, 45.76 
    96.15, 52.22, 369.31, 36.93 
    53.23, 56.85, 630.77, 63.08 
    82.48, 97.64, 198.24, 19.82 

我已删除页眉和创建每个数据列的四个列表中:A为XPOS,B为ypos,C代表测量值,D代表错误。

C或测量是我编辑为E的数据集,其值超过400.我想从A(xpos)中获得与C中的值相匹配的值(或测量)。

我想在IPython的笔记本绘制我给E得到了与A中的相应值的列表

+3

这是一个模糊的问题。你能举一个你想看的输入/输出的例子吗? – TheSoundDefense

+0

正如@TheSoundDefense所提到的,你的输入和预期输出的几个简单例子将会非常有用。 – skrrgwasme

+1

不要试图用文字来解释它。显示A,E和C的一些示例列表。 – CoryKramer

回答

2

我会通过zip荷兰国际集团A和C计算前,可一起做:

E_pairs = [pair for pair in zip(A, C) if pair[1] > 400] 

这会给你一个和C值的元组的列表,其中C是超过了400人

+0

这就是我需要的,谢谢!那么如何将元组分成两个单独的列表?我以我知道如何使用.split()的方式进行了操作,但是出现错误,提示元组无法分割 –

+0

将元组列表分割为两个单独列表的最简洁和惯用的方法是'a_vals,e_vals = ZIP(* E_pairs)'。 –

+0

完美,这就是我需要的。再次感谢! –

0
A=[100,300,400,200,500] 

B=['a','b','c','d','e'] 

E=[[a,b] for a,b in zip(A,B)] 

my_list=filter(lambda x:x[0]>400,E) 
+0

这与我的回答基本相同,但您不需要列表理解来创建'E'。 'E = zip(A,B)'是等价的,只不过你会得到一个元组列表而不是列表列表。但是不需要编辑对,所以也不需要将它们从元组转换为列表。 –

+0

您可以将这两个列表视为一个元组,使得绘制A vs B更容易,其中A> 400 –

+0

是的;你的答案做不必要的工作,不要使用'zip'的输出作为元组。 –

0

如果名单是相同的大小,你可以使用枚举并列出每个:

final_a = [] 
final_c = [] 
for ind, x in enumerate(C): 
    if x > 400: 
     final_c.append(x) 
     final_a.append(A[ind]) 
相关问题