How to save and load an array of complex numbers using numpy.savetxt? How to save and load an array of complex numbers using numpy.savetxt? python python

How to save and load an array of complex numbers using numpy.savetxt?


It's easier and saves a few temporary arrays to just reinterpret the array as a real array.

Saving:

numpy.savetxt('outfile.txt', array.view(float))

Loading:

array = numpy.loadtxt('outfile.txt').view(complex)

If you prefer to have real and imaginary part on the same line in the file, you can use

numpy.savetxt('outfile.txt', array.view(float).reshape(-1, 2))

or

array = numpy.loadtxt('outfile.txt').view(complex).reshape(-1)

respectively.

(Note that neither view() nor reshape() copies the array -- it will just reinterpret the same data in a different way.)

Addendum from the question asker:

If you want to save more than one complex array in the same file, you can do it like so:

numpy.savetxt('outfile.txt', numpy.column_stack([    array1.view(float).reshape(-1, 2),    array2.view(float).reshape(-1, 2),]))array1, array2 = numpy.loadtxt('outfile.txt', unpack=True).view(complex)

The reshaping is necessary because numpy.view() doesn't operate on strided arrays.


Here's my solution, in case anybody hits this question from Google.

Saving:

numpy.savetxt('outfile.txt', numpy.column_stack([array.real, array.imag]))

Loading:

array_real, array_imag = numpy.loadtxt('outfile.txt', unpack=True)array = array_real + 1j * array_imag

I will still award the checkmark to a better solution!