numpy配列をtxtファイルに行ごとに保存する
私はフォームのnumpy配列を持っています
a = [1,2,3]
これを.txtファイルに保存して、ファイルが次のようになるようにします。
1 2 3
Numpy.savetxtを使用すると、次のようなファイルが取得されます。
1
2
3
これに対する簡単な解決策があるはずです、何か提案はありますか?
numpy >= 1.5
、 できるよ:
#ファイル名は二重引用符で囲まれていることに注意してください。
#example "filename.txt"
numpy.savetxt("filename", a, newline=" ")
編集
同じ長さの複数の1D配列
a = numpy.array([1,2,3])
b = numpy.array([4,5,6])
numpy.savetxt(filename, (a,b), fmt="%d")
# gives:
# 1 2 3
# 4 5 6
可変長の複数の1D配列
a = numpy.array([1,2,3])
b = numpy.array([4,5])
with open(filename,"w") as f:
f.write("\n".join(" ".join(map(str, x)) for x in (a,b)))
# gives:
# 1 2 3
# 4 5
別の答えは、次のように_(1, N)
_の次元を持つように配列を変形することです:
_savetext(filename, a.reshape(1, a.shape[0]))
_
import numpy
a = numpy.array([1,2,3])
with open(r'test.txt', 'w') as f:
f.write(" ".join(map(str, a)))
受け入れられた回答の最初の解決策は、改行文字がまだ必要な場合に問題があることがわかりました。問題に対する最も簡単な解決策はこれを行うことでした:
numpy.savetxt(filename, [a], delimiter='\t')
import numpy as np
a = [1,2,3]
b = np.array(a).reshape((1,3))
np.savetxt('a.txt',b,fmt='%d')
私はこれが古いことを知っていますが、これらの答えはどれもnumpyが行ごとに配列を保存しないという根本的な問題を解決しませんでした。私はこのライナーが私のためのトリックをしたことがわかりました:
b = np.matrix(a)
np.savetxt("file", b)
非常に簡単:[1,2,3]
リストは列のようなものです。
1
2
3
行のようなリストが必要な場合は、コルシェテを2重にします。
[[1, 2, 3]] ---> 1, 2, 3
そして
[[1, 2, 3], [4, 5, 6]] ---> 1, 2, 3
4, 5, 6
最後に:
np.savetxt("file", [['r1c1', 'r1c2'], ['r2c1', 'r2c2']], delimiter=';', fmt='%s')
注、角括弧の間のコンマ、内部リストは外部リストの要素です
numpy.savetxt()
メソッドには、注目に値するいくつかのパラメーターがあります。
fmt:strまたはstrsのシーケンス、オプション
配列内の数値をフォーマットするために使用されます。フォーマットの詳細についてはドキュメントを参照してください区切り文字:str、オプション
列を区切る文字列または文字改行:str、オプション
行を区切る文字列または文字。
例を見てみましょう。サイズ(M, N)
の配列があり、範囲(0、255)の整数で構成されています。配列を行ごとに保存して適切に表示するには、次のコードを使用できます。
import numpy as np
np.savetxt("my_array.txt", my_array, fmt="%4d", delimiter=",", newline="\n")