3

行ごとに相互に続く必要がある2つの文字列配列があり、その後、テキストファイルに書き込む必要があります

import numpy as np
title1 = np.array(['text1'])  
title2 = np.array(['text2'])
np.savetxt('result.csv',(title1, title2),fmt="%s")

結果は次で始まるファイルである必要があります。

text1
text2

しかし、それはこのようなものです:

text1text2

2番目の問題は、これら2行のテキストの下にあります。次の行にマトリックスを配置する必要があります(私のものははるかに大きいです)。行列のエントリは、セミコロン「;」で区切る必要があります。- 行の最後に 1 つはありません (!)

a=np.array([[1.2,2.3,3.4],[4.5,5.6,6.7],[7.8,8.8,9.8]])
np.savetxt('test.csv', a, delimiter=';', fmt='%.1f')

結果のファイルは次のようになります。

text1
text2
1.2;2.3;3.4
4.5;5.6;6.7
7.8;8.8;9.8

上記のコードは、エントリの次の行を出力ファイルの次の行に配置しません。(メモ帳で開くと、Excelでは機能するようです。説明した方法で、出力で文字列と数値を組み合わせるにはどうすればよいですか?

4

2 に答える 2

4

私は別のスレッドを見てアイデアを思いつきました:

np.savetxt('test.csv',(title1, title2),fmt="%s", newline='\r\n')

import csv
with open('test.csv', 'a') as f:
    np.savetxt(f, I, delimiter=';', fmt='%s,'newline='\r\n')
f.close()

「a」は追加モード用ですが、残念ながらエラーメッセージが表示されます

line 1047, in savetxt
    fh.write(asbytes(format % tuple(row) + newline))
TypeError: must be str, not bytes

「a」の代わりに「ab」を使用すると、メモ帳では正しく表示される結果が得られ ますが、Excel ではマトリックスの最初の 2 列が「日付」モードになっています。何が起こったのかを理解するために、ここで説明を探します。

于 2013-11-06T10:37:23.817 に答える
1

この回答を確認してください。Numpy は unix 標準に従ってエンコードしていますが、メモ帳は理解しておらず、Windows のみを想定しており、.\nなしではレンダリングしません\rが、他のほとんどの非ブレインデッド ソフトウェアはそれを正しく読み取ります。

編集:この他の質問またはドキュメントで説明されているように、numpy.savetxt には、ウィンドウの改行エンコーディングを設定できるパラメーターがあります。したがって、本当にメモ帳と互換性を持たせたい場合は、次のようなものが必要です。

np.savetxt('test.csv', a, delimiter=';', newline='\r\n', fmt='%.1f')
于 2013-11-05T16:47:35.997 に答える