1

我在 2D 网格上有大型数据文件。它们的组织方式使得网格中的后续数据行是文件中的后续行。每列由制表符分隔。本质上,这是一个 CSV 文件,但带有选项卡而不是列。

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

4

2 回答 2

2

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

例如:

在第 1 步中,您读取整个输入文件并仅处理前 10 列。如果输入有 100 万行,则输出将是一个有 100 万列和 10 行的文件。在下一次通过时,您将再次读取输入,并处理第 11 到 20 列,将结果附加到原始输出文件中。等等....

于 2009-10-15T02:54:11.807 回答
0

如果你安装了带有 NumPy 的 Python,就这么简单:

#!/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 标准库的一部分。

于 2012-12-22T20:56:23.303 回答