2013-03-14 102 views
2

我知道我可以用genfromtxt命令讀取一個numpy文件。它的工作原理是這樣的:如何將幾個數據庫文件與numpy結合使用?

ax.plot(data['field'],data['field2'], linestyle=" ",color="red") 

ax.boxplot(data) 

其真棒:

data = numpy.genfromtxt('bmrbtmp',unpack=True,names=True,dtype=None) 

我可以在那裏繪製的東西很容易。我現在想要做的是讀取整個文件夾並將它們組合成一個巨大的數據集。如何將數據點添加到數據數據結構? 我該如何一次讀取整個文件夾?

+0

是否所有的文件具有相同的格式? (相同的標題和列數?) – unutbu 2013-03-14 15:04:40

+0

難道你只是連接數組? – dmg 2013-03-14 15:05:52

+0

是的所有文件和標題相同 – tarrasch 2013-03-14 15:07:26

回答

2

要訪問目錄中的所有文件,請使用os.walk

要「垂直」堆疊兩個結構化numpy陣列,請使用np.vstack

要保存結果,請使用np.savetxt以文本格式保存,或使用np.save以(更小)二進制格式保存數組。


import os 
import numpy as np 

result = None 
for root, dirs, files in os.walk('.', topdown = True): 
    for filename in files: 
     with open(os.path.join(root, filename), 'r') as f: 
      data = np.genfromtxt(f, unpack=True, names=True, dtype=None) 
     if result is None: 
      result = data 
     else: 
      result = np.vstack((result, data)) 

print(result[:10]) # print first 10 lines 
np.save('/tmp/outfile.npy', result) 
+0

感謝您的優秀回答 – tarrasch 2013-03-15 07:49:52

相關問題