2014-05-15 176 views
0

我有这样的一个文件中的一些数据:蟒蛇负载数据

18499 0.00822792 
14606 0.00778273 
3926 0.00287178 
2013 0.00130196 
3053 0.000829384 
16320 0.00249749 

我想在一行中加载和分析在蟒蛇的数据,这是我写的那一刻:

with open(input_file) as f: 
    data = f.read() 
data = [line.split() for line in data.split('\n') if line] 
x = list(map((lambda x:float(x[0])), data)) 
y = list(map((lambda x:float(x[1])), data)) 

所以我们的目标是有类似:

x, y = .... 
+0

你现在有什么问题?如果它有效,并且你只想对你的实现进行审查,请尝试http://codereview.stackexchange.com – jonrsharpe

+1

'pandas.from_csv('yourpath')。to_csv('pathtosave')'或者沿着这些行的东西。 –

+1

这是可行的,但请注意PEP-0020,特别是“可读性计数”。 –

回答

2
with open(input_file) as f: 
    x,y = zip(*[map(float,line.split()) for line in f]) 
print x 
print y 

我想我得到了我的括号平衡有...但只是因为你可以并不意味着你应该......

[编辑]固定代码实际工作...

+1

可怕。 [只写代码](https://en.wikipedia.org/wiki/Write-only_language)。 –

+0

因此,我同意我的注释,仅仅因为你不能表示你应该 –

0
>>> from itertools import izip 
>>> x, y = map(list, izip(*(line.split() for line in open(input_file) if line))) 
>>> x 
['18499', '14606', '3926', '2013', '3053', '16320'] 
>>> y 
['0.00822792', '0.00778273', '0.00287178', '0.00130196', '0.000829384', '0.00249749'] 
2

怎么样这个?

xy = numpy.loadtxt('input_file.txt'); 
x, y = xy[:, 0], xy[:, 1]