2014-04-22 79 views
3

我需要編寫和讀取複數。我想用numpy.savetxtnumpy.loadtxt這樣做。由於我寫的代碼非常大,我創建了一個測試文件來嘗試寫入和讀取複數。使用numpy.savetxt和numpy.loadtxt寫入和讀取複數

到目前爲止,我已經能夠使用numpy.savetxt編寫複數。代碼如下:

import numpy 

d1 = -0.240921619563 - 0.0303165074169j 
d2 = -0.340921619563 - 0.0403165074169j 
d3 = -0.440921619563 - 0.0503165074169j 
d4 = -0.540921619563 - 0.0603165074169j 

array = numpy.array([d1, d2, d3, d4]) 

save = open("test.dat", "w") 
numpy.savetxt(save, array.reshape(1, array.shape[0]), newline = "\r\n", fmt = "%.10f") 

save.close() 

這給出了以下的輸出:

(-0.2409216196+-0.0303165074j) (-0.3409216196+-0.0403165074j) (-0.4409216196+-0.0503165074j) (-0.5409216196+-0.0603165074j) 

一切,我現在希望能夠做的是實際讀取/加載數據。該腳本我有是:

import numpy 

d = numpy.loadtxt("test.dat") 

這段代碼是不夠的,我目前無法加載數據。我的問題與this one類似。但是,通過手動將+-替換爲-,我仍然無法加載數據。我認爲解決方案在於numpy.loadtxtdtype選項。儘管如此,我還是無法弄清楚。

非常感謝您的幫助!

+1

看看這有助於:http://stackoverflow.com/questions/21012484/how-to-save-a-complex- matrix-in-a-file/ –

+0

爲什麼要使用'loadtxt'和'savetxt'而不僅僅是'load'和'save'或'tofile'和'fromfile'是否有特定的原因? – ebarr

+0

這不是一個在numpy中的錯誤嗎?在我看來'savetxt'應該提供一個格式正確的複數...... –

回答

4

謝謝沃倫Weckesser!你建議的鏈接幫了我很多。我現在有兩個工作腳本:一個用於使用numpy.savetxt編寫複數,另一個用於使用numpy.loadtxt從文件讀取/加載複數。

有關未來的參考資料,代碼如下。

寫作:

import numpy 

d1 = -0.240921619563-0.0303165074169j 
d2 = -0.340921619563-0.0403165074169j 
d3 = -0.440921619563-0.0503165074169j 
d4 = -0.540921619563-0.0603165074169j 

array = numpy.array([d1, d2, d3, d4]) 

save = open("test.dat","w") 
numpy.savetxt(save, array.reshape(1, array.shape[0]), newline = "\r\n", fmt = '%.4f%+.4fj '*4) 

save.close() 

讀/加載:

import numpy 

coeffs = numpy.loadtxt("test.dat", dtype = numpy.complex128)