Writing and reading complex numbers using numpy.savetxt and numpy.loadtxt

喜你入骨 提交于 2019-12-02 01:00:28

问题


I need to write and read complex numbers. I would like to use numpy.savetxt and numpy.loadtxt to do so. Since the code that I have written is rather big I created a test file to try to write and read complex numbers.

So far I have been able to write complex numbers using numpy.savetxt. The code is the following:

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()

This gives the following output:

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

All that I now want to be able to do is actually read/load the data. The script I have is:

import numpy

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

This piece of code is not sufficient and I am currently unable to load the data. My problem is similar to this one. However, by manually replacing the +- by a - I am still unable to load the data. I think the solution lies in the dtype option for numpy.loadtxt. I have not been able to figure it out though.

Your help is greatly appreciated!


回答1:


Thanks Warren Weckesser! The link you suggested helped me a lot. I now have two working scripts: one for writing complex numbers using numpy.savetxt and one for reading/loading the complex numbers from the file using numpy.loadtxt.

For future references, the codes are listed below.

Writing:

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()

Reading/Loading:

import numpy

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


来源:https://stackoverflow.com/questions/23231698/writing-and-reading-complex-numbers-using-numpy-savetxt-and-numpy-loadtxt

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!