2014-03-29 54 views
1

我希望能夠讀取,計算和打印出相同格式的多個文件。numpy loadtext和savetxt多個文件?

filenames2 = ["AAA", "BBB", "CCC", "DDD", "EEE"] 
for filename2 in filenames2: 
    with loadtxt (filename2, float) as data: 
     a1 = data[:,0] 
     b1 = data[:,3] 
     c1 = data[:,4] 
     d1 = data[:,5] 
     e1 = data[:,6] 
    %% DO something with all those data. 
    z = numpy.array((calculated_a11, calculated_b11, calculated_c11), dtype = float) 
    z2 = z.T 
    numpy.savetxt('avegedoutput_%s.txt' %filenames2, z2.reshape((1000,3)), fmt='%i %f %f') 

我希望用這種方式寫,這樣希望能夠處理多個文件。但似乎numpy的savetxt和loadtxt不能以這種方式工作....歡迎任何建議。

在此先感謝。

ps)另外,我是否需要爲這些數據閱讀部分製作空矩陣?看起來像這些命令使這些錯誤:「類型錯誤:'文件'對象是unsubscriptable」。

我認爲我需要製作零矩陣,並將數據放入這些矩陣中,就像我在Matlab中做的那樣。這是正確的嗎?

回答

2

numpy.loadtxt需要一個文件名(字符串)並返回一個numpy數組。所以,你不需要with條款:

filenames2 = ["AAA", "BBB", "CCC", "DDD", "EEE"] 
for filename2 in filenames2: 
    data = np.loadtxt(filename2) 
    a1 = data[:,0] 
    # ... 
    np.savetxt('output_filename.txt', z, ...) 

到目前爲止,我沒有看到任何需要作出零點矩陣在你的代碼。 data將得到該文件的內容和a1,b1,...將從data得到它們的內容。

+1

我真的會推薦'a1,_,_,b1,c1,d1,e1 = np.genfromtxt(filename2,unpack = True)' – askewchan