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

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

新規登録して質問してみよう
ただいま回答率
85.48%
多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

1回答

532閲覧

配列の末尾に0を補完したい ValueError: I/O operation on closed file.

iface

総合スコア42

多次元配列

1次元配列内にさらに配列を格納している配列を、多次元配列と呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2023/01/10 06:38

前提

{'batch_label': 'testing batch 1 of 1', 'labels':[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2], 'data': array([[-440,-910,-1501,-1667,-1346,-781,94,779,1057,1622,2082,1609,462,-606,-1421,-1912,-2019,-1861,-1541,-1092,-290,796,1637,1909,1817,1633,1298,778,691,1062,-558,-1786,-777,-365,-227,94,162,-292,-795,-763,-437,-166,346,1051,1398,1131,425,-178,-400,-303,-134,-103,-88,-93,19,149,79,-167,-457,-650,-657,-694,-818,-496,146,690,1173,1349,1102,849,453,-124,-497,-745,-1021,-1081,-874,-648,-411,-42,277,395,423,477,521,588,664,433,42,-317,-702,-948,-1159,-1256,-104,636,-708,-1624,-197,1851,2316,2202,1568,202,-603,-1227,-2074,-2626,-2338,-1039,686,2215,2962,2861,2246,1284,435,-357,-1207,-1724,-1767,-1270,-496,63,222,430,759,600,19,-605,-1323,-1955,-1420,-472,-1549,-1381,0],[-470,-387,-200,35,186,226,89,-155,-337,-573,-910,-738,1155,1120,-1110,-886,778,2213,2542,1043,-260,-413,-477,-466,-594,-980,-1235,-1070,-685,-313,58,402,745,986,1067,1055,881,458,-123,-519,-635,-601,-462,-276,-93,-15,-74,75,407,685,797,591,278,74,-45,72,199,-194,-750,-891,-518,-35,-41,543,1255,-988,-3550,-1998,1368,2219,1315,962,780,237,-811,-1884,-2128,-1266,223,1310,1348,758,207,112,305,321,-60,-542,-859,-938,-788,-690,-472,146,851,1183,1046,814,664,196,-223,49,879,34,-885,-282,69,205,-29,-303,-589,-735,-496,-272,-280,-252,-70,107,83,-26,71,195,291,598,755,509,136,-213,-504,-607,-430,-105,117,33,-180,-227,0],... ...,367,363,0,0,0,0,0,0,0,0,0,0,0,0]]), 'filename':['.csv',' .csv',' .csv',' .csv',' ...]}

このような形の辞書型リストを作成しています。

実現したいこと

ここで私がやりたいことは、'data'というラベルにたくさんの数字配列が格納されているのですが、それぞれの末尾に0を647個ずつ補完したいと思っています。
プログラムの34行目以降になりますが、以下のようなエラーが出て作成ができません。
どのようにデバックすれば良いでしょうか。
よろしくお願いいたします。

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

ValueError Traceback (most recent call last) <ipython-input-12-ce07c8472c1c> in <module> 4 data2 = [np.pad(data, ((0, 0), (0, 647)))] 5 print(data2) ----> 6 f.write("'data':array(") 7 8 for row in data2: ValueError: I/O operation on closed file.

該当のソースコード

python

1import pandas as pd 2import numpy as np 3 4f = open('output.txt', 'w') 5 6df = pd.read_csv('test_125.csv') 7 8all_files = list(df.columns.values) 9 10files = [] 11for i in range(0, len(all_files), 3): 12 files.append(all_files[i]) 13 14f.write("{'filename':[") 15files2 = ",".join(files) 16for i in files: 17 f.write("'") 18 f.write(i) 19 f.write("'") 20 if i != files[-1]: 21 f.write(",") 22f.write("], ") 23 24df2 = df[files] 25array = df2.values 26label = array[-1].tolist() 27label = [str(int(x)) for x in label] 28 29f.write("'label':[") 30label2 = ",".join(label) 31f.writelines(label2) 32f.write("], ") 33 34array_t = np.array(array).T 35data = [[str(int(k)) for k in l[:-1]] for l in array_t] 36data2 = [np.pad(data, ((0, 0), (0, 647)))] #######← 37print(data2) 38f.write("'data':array(") 39 40for row in data2: 41 f.write("[") 42 row2 = ",".join(row) 43 f.write(row2) 44 f.write("]") 45 if row != data2[-1]: 46 f.write(",") 47f.write(")}") 48 49f.close() 50

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

jupyter notebook を使用

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

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

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

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

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

guest

回答1

0

ざっと見たところ、コードにおかしなところはなさそうに見えますが、

ValueError: I/O operation on closed file.

書き込もうとしている「f」はすでに閉じてるよ、というエラーということと、「jupyter notebook を使用」ということから、操作ミスでファイルが閉じてしまっているのではないでしょうか。

提示のコードのセル配置と、実行順序を確認してはいかがでしょうか。

投稿2023/01/10 09:28

TakaiY

総合スコア12765

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問