質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

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

Q&A

解決済

1回答

995閲覧

csv書き込みでdtypeエラーが発生する

退会済みユーザー

退会済みユーザー

総合スコア0

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Python

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

0グッド

0クリップ

投稿2020/02/10 05:19

前提・実現したいこと

学習した結果をcsvに書き込んで保存したいのですが、書き込む過程でエラーが出てきて保存できません。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "/home/deepstation/PycharmProjects/hoge/hogehoge.py", line 444, in <module> writer.writerow([i] + row) TypeError: ufunc 'add' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')

該当のソースコード

python

1 2P_list = [] 3 4#学習・予測部分省略 5 6 pred_P = model.predict(P_valid) 7 for i in range(10): 8 P_rmse = np.sqrt(np.mean(pred_P[i] - P_valid[i])**2) 9 P_list.append(P_rmse) 10 11index = ['1', '2', '3', '4', '5', '6', '7', '8'] 12with open(CSV_fname + '.csv', 'w') as f: 13 writer = csv.writer(f) 14 writer.writerow(header) 15 for i, row in zip(index, P_list): 16 writer.writerow([i] + row)

試したこと

デバッグモードで確認したところ、P_list、indexともにクラスはリストです。pred_Pはndarrayです。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

guest

回答1

0

ベストアンサー

python

1writer.writerow([i] + row)

の部分では ndarray である row の各要素に i を加算する処理が呼び出されてしまいます。
i は文字列になっているのでエラーが発生しています。
リスト同士の + であれば連結になるので次のように tolist() を使えばよいと思います。

python

1writer.writerow([i] + row.tolist())

投稿2020/02/10 06:48

編集2020/02/10 06:49
kit494way

総合スコア317

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

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

退会済みユーザー

退会済みユーザー

2020/02/10 07:08

ありがとうございます。このように実行したところ writer.writerow([i] + row.tolist()) TypeError: can only concatenate list (not "float") to list というエラーが出現してしまいました。
kit494way

2020/02/10 07:34

すみません。row が ndarray だと早合点しました。 row は float で、1行に2列(行番号と数値)の csv を出力しようとしている、という理解で良いでしょうか? であれば、 writer.writerow([i, row]) でよいかと思います。
退会済みユーザー

退会済みユーザー

2020/02/10 07:50 編集

説明が足りずに申し訳ございません。P_listは8行10列の行列です。そのため、writer.writerow([i, row])を試したところ1行につき2列の情報が入力されていましたが、出力は1行につき11列(行番号と数値)の情報を記載したいです。お手数をお掛けして申し訳ございません。
kit494way

2020/02/10 08:34

P_list が行列ではなく、1次元リストになっていないか、 print(P_list) で確認してみてください。
退会済みユーザー

退会済みユーザー

2020/02/10 09:00

確認したところ、1次元のリストになっていました。整形したところうまく出来ました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問