2009-10-15 119 views
1

我有一个2D网格上的值的大型数据文件。 它们的组织方式使得网格中后续的数据行是文件中的后续行。 每列由制表符分隔。 实质上,这是一个CSV文件,但是使用制表符而不是列。转换文件中的数据网格的最佳方法

我需要转置数据(第一行成为第一列)并将其输出到另一个文件。什么是最好的方法来做到这一点?任何语言都可以(我更喜欢使用Perl或C/C++)。目前,我已经将整个文件中的Perl脚本读入内存,但我拥有的文件非常庞大。

+0

你是什么意思“巨大”? 1GB,100GB,1TB? – 2009-10-15 02:39:23

回答

2

最简单的方法是在您的输入中多次传递,在每次传递中提取一列的子集。列的数量将取决于您要使用多少内存以及输入文件中有多少行。

例如:

在通1你读整个输入文件并且仅处理第一,比方说,10列。如果输入有100万行,则输出将是一个包含100万列和10行的文件。在下一个阶段中,您将再次读取输入,并处理11到20列,并将结果附加到原始输出文件。等等....

0

如果你有Python的安装NumPy的,这是因为这很容易:

#!/usr/bin/env python 

import numpy, csv 

with open('/path/to/data.csv', 'rb') as file: 
    csvdata = csv.reader() 

data = numpy.array(csvdata) 
transpose = data.T 

...的csv模块是Python标准库的一部分。

相关问题