2014-01-10 49 views
0

我想編寫一個小的Python腳本來做一些數據分析。我有幾個數據文件,每個數據文件都是一列數據,我知道如何使用numpy.loadtxt將每個數據文件導入到python中,並讓我返回一個ndarray。但我無法弄清楚如何連接這些ndarrays,即使我先試着壓扁它們,numpy.concatenate或numpy.append也總是給我返回錯誤信息。從幾個數據文件構建1維數組

您是否知道解決方案?

好的,因爲你在詢問代碼和數據的細節。這是我的數據文件看起來是這樣的:

1.4533423 
1.3709900 
1.7832323 
... 

只是一個浮點數的專欄中,我沒有問題,進口使用單個文件:

data = numpy.loadtxt("data_filename") 

我的代碼試圖以連接陣列看起來像這樣現在(嘗試numpy.concatenate和numpy.append後,我現在想numpy.insert):

data = numpy.zeros(0) #creating an empty first array that will be incremented by each file after 
for filename in sys.argv[1:]: 
    temp = numpy.loadtxt(filename) 
    numpy.insert(data, numpy.arange(len(temp), temp)) 

與運行我的腳本,當我路過的文件名:

./my_script.py ALL_THE_DATAFILES 

和錯誤消息我得到的是:

TypeError: only length-1 arrays can be converted to Python scalars 
+2

請您現有的代碼添加到的問題! – YXD

+2

請發佈代碼,以及您的數據文件格式的一個小樣本。 – Keeler

回答

4

numpy.concatenate肯定會是一個有效的選擇 - 無樣本數據和示例代碼和相應的錯誤信息,我們無法進一步幫助。

替代將是numpy.r_numpy.s_

編輯

這段代碼:

import sys 
import numpy as np 
filenames = sys.argv[1:] 
arrays = [np.loadtxt(filename) for filename in filenames] 
final_array = np.concatenate(arrays, axis=0) 
+0

謝謝你的工作,但我需要將axis = 1更改爲axis = 0。 – Liam

+0

也許,我在回答中調整了它。 –