2011-06-27 15 views
14

複素数の配列をテキストファイルに保存するには、numpy.savetxt()を使用します。問題:numpy.savetxtを使用して複素数の配列を保存し読み込む方法は?

  • デフォルトのフォーマット文字列で複合配列を保存すると、虚数部は破棄されます。
  • fmt='%s'を使用する場合は、を指定しないかぎり、numpy.loadtxt()をロードできません。それでも配列にNaNがある場合、ロードは失敗します。

誰かがnumpyのメーリングリストでこのmultipletimesについて尋ね、さらにはbugを提出したが、応答を得ていないているように見えます。自分で何かを組み立てる前に、これを行う標準的な方法がありますか?

答えて

11

実際の配列として配列を再解析するほうが簡単で、いくつかの一時配列を保存するだけです。

省:

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.view()がないので

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) 

整形必要です:そうは次のようにあなたがそれを行うことができ、同じファイル内に複数の複雑な配列、ストライドアレイで動作します。

+0

優秀!短くてエレガント。 – ptomato

2

誰かがGoogleからこの質問に当たった場合のための私のソリューションです。

省:

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

ロード:

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

、私はまだ良い解決策にチェックマークを授与されます!

関連する問題