2009-10-15 34 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標準庫的一部分。

相關問題