🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

795閲覧

np.arrayオブジェクトのcsv保存

shirakoponzu000

総合スコア9

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/03/18 05:02

scikit-learnのMLPの勉強で、以下のWEBページを参考にしています。
【NumPy入門 np.save】配列をファイルに保存するnp.saveを使いこなす

モデルの重みリストへのアクセスはうまくいきました。
np.arrayオブジェクトのデータ例

[array([[ 3.60846239e-001, 3.96094757e-001, 1.07035237e-052, 9.66643055e-002, -2.15863938e-001], ~省略~ [-2.66525758e-001, 2.79996930e-001, 1.70866353e-095, -1.95551100e-001, -4.06123398e-001]]), array([[-2.59690263e-01], [ 9.12419559e-01], [-1.94796876e-51], [-5.40719783e-01], [ 9.78998780e-01]])]

csvに出力したいのですが、うまくいかずアドバイスいただけると幸いです。

上記のデータを以下のコードでcsv出力したら、以下の画像の通り、カンマ区切りが無く、また[]が付いたままとなっており、以下をしたいと考えています。

  • []を取る
  • カンマ区切りにする。
  • csvにするために2次元に落とす方法

試したコード

np.savetxt('test_out.csv',params, delimiter=',',fmt="%s")

csvの出力結果の表示
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kirara0048

2021/03/18 05:39

3つの形の異なる配列が無理やり1つの配列に押し込まれているもののようです。 どのように出力したいのでしょうか
bsdfan

2021/03/18 07:16

paramsは配列(ndarray)ではなく、配列が入っているリストなのではないですか? type(params)を確認してみてください。
shirakoponzu000

2021/03/18 07:46

kirara0048さん コメントありがとうございます。 まずは、どのような形式となってもいいので、[]なしの、カンマ区切りで、csvの表に当てはめられればと思っています。可能でしょうか?
shirakoponzu000

2021/03/18 07:49

bsdfanさんコメントありがとうございました。 type(params)を実行したら <class 'list'> となりました。
shirakoponzu000

2021/03/18 07:59

リストから一つの配列を取り出して、csv出力したら、表形式で出力できました。ありがとうございます。
guest

回答1

0

一列だけの配列を縦に出して良いなら

python

1with open('test_out.csv', 'w', newline='') as f: 2 writer = csv.writer(f) 3 for array in params: 4 for i in range(array.shape[0]): 5 writer.writerow(list(array[i]))

一列だけの配列を横に出したいなら

python

1with open('test_out.csv', 'w', newline='') as f: 2 writer = csv.writer(f) 3 for array in params: 4 if array.shape[1] == 1: 5 writer.writerow(list(array.reshape(array.shape[0]))) 6 else: 7 for i in range(array.shape[0]): 8 writer.writerow(list(array[i]))

投稿2021/03/18 07:54

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問