我有一个2D网格上的值的大型数据文件。 它们的组织方式使得网格中后续的数据行是文件中的后续行。 每列由制表符分隔。 实质上,这是一个CSV文件,但是使用制表符而不是列。转换文件中的数据网格的最佳方法
我需要转置数据(第一行成为第一列)并将其输出到另一个文件。什么是最好的方法来做到这一点?任何语言都可以(我更喜欢使用Perl或C/C++)。目前,我已经将整个文件中的Perl脚本读入内存,但我拥有的文件非常庞大。
我有一个2D网格上的值的大型数据文件。 它们的组织方式使得网格中后续的数据行是文件中的后续行。 每列由制表符分隔。 实质上,这是一个CSV文件,但是使用制表符而不是列。转换文件中的数据网格的最佳方法
我需要转置数据(第一行成为第一列)并将其输出到另一个文件。什么是最好的方法来做到这一点?任何语言都可以(我更喜欢使用Perl或C/C++)。目前,我已经将整个文件中的Perl脚本读入内存,但我拥有的文件非常庞大。
最简单的方法是在您的输入中多次传递,在每次传递中提取一列的子集。列的数量将取决于您要使用多少内存以及输入文件中有多少行。
例如:
在通1你读整个输入文件并且仅处理第一,比方说,10列。如果输入有100万行,则输出将是一个包含100万列和10行的文件。在下一个阶段中,您将再次读取输入,并处理11到20列,并将结果附加到原始输出文件。等等....
如果你有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标准库的一部分。
你是什么意思“巨大”? 1GB,100GB,1TB? – 2009-10-15 02:39:23