Ответ 1
Это проще и экономит несколько временных массивов, чтобы просто переинтерпретировать массив как реальный массив.
Сохранение:
numpy.savetxt('outfile.txt', array.view(float))
Загрузка:
array = numpy.loadtxt('outfile.txt').view(complex)
Если вы предпочитаете иметь реальную и мнимую часть в одной строке в файле, вы можете использовать
numpy.savetxt('outfile.txt', array.view(float).reshape(-1, 2))
или
array = numpy.loadtxt('outfile.txt').view(complex).reshape(-1)
соответственно.
(Обратите внимание, что ни view()
, ни reshape()
не копирует массив - он просто переинтерпретирует одни и те же данные по-другому.)
Добавление от вопроса:
Если вы хотите сохранить более одного сложного массива в том же файле, вы можете сделать это следующим образом:
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)
Реорганизация необходима, потому что numpy.view()
не работает с массивами strided.