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

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

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

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

Python

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

Q&A

解決済

1回答

9675閲覧

Pythonプログラムの入力ファイルのエラーメッセージ

11yuu

総合スコア1

CSV

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

Python

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

0グッド

0クリップ

投稿2022/02/02 16:20

前提・実現したいこと

Python初心者です。

csvファイル2種類を読み込んで走査を行うプログラムを作成しているのですが、エラーの意味が分からず困っています。

入力ファイルのサイズに関するエラーなのはわかるのですが、どのような訂正を行えば良いか分かりません。

初歩的な質問ですが、ご回答いただけると幸いです。

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

PS C:\Users\suu\PycharmProjects\pythonProject> python scan.py Traceback (most recent call last): File "C:\Users\suu\PycharmProjects\pythonProject\scan.py", line 34, in <module> dataset = np.append(dataset, data.reshape(1, -1), axis=0) File "<__array_function__ internals>", line 5, in append File "C:\Users\suu\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\numpy\lib\ function_base.py", line 4817, in append return concatenate((arr, values), axis=axis) File "<__array_function__ internals>", line 5, in concatenate ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 121 and the array at index 1 has size 110

該当のソースコード

pythonファイル

python

1import pandas as pd 2import numpy as np 3 4INPUT_STRAIN_CSV_PATH = r"C:\programming\strain.csv" 5INPUT_BGS_CSV_PATH = r"C:\programming\observed_bgs.csv" 6OUTPUT_CSV_PATH = 'test_bgs.csv' 7 8C = 50 # 比例定数[GHz] 9f_B = 11.08 # ひずみが無い場合の中心周波数[GHz] 10delta_f = 0.005 # 周波数間隔[GHz] 11delta_z = 0.1 # 計測位置間隔[m] 12M = 11 # 行 13N = 11 # 列 14 15df_STRAIN = pd.read_csv(INPUT_STRAIN_CSV_PATH, header=None, index_col=None, dtype='float') 16df_BGS = pd.read_csv(INPUT_BGS_CSV_PATH, header=0, index_col=0, dtype='float') 17df_STRAIN = df_STRAIN*C + f_B # 周波数シフト 18 19num_list = ['label'] 20for m in range(M): 21 for n in range(N): 22 num_list.append('['+str(m)+']['+str(n)+']') # リストに'+str(m)+str(n)'をそれぞれ11まで追加 23 24dataset = np.empty((1, M*N)) # 1行121列の値が適当な配列の生成 25column_num_z = int((N - 1) / 2) 26for true_f_B in df_STRAIN[0]: 27 for approximate_f_B in df_BGS.index: 28 if true_f_B - delta_f/2 <= approximate_f_B < true_f_B + delta_f/2: # 周波数間隔内に近い中心周波数がある場合 29 index_num_f = df_BGS.index.get_loc(approximate_f_B) # 観測BGS値のファイルにあるあてはまるデータの行数を返す 30 start_f, end_f = int(index_num_f - (M - 1) / 2), int(index_num_f + (M - 1) / 2 + 1) # 行に観測周波数 31 start_z, end_z = int(column_num_z - (N - 1) / 2), int(column_num_z + (N - 1) / 2 + 1) # 列に観測位置 32 data = df_BGS.iloc[start_f:end_f, start_z:end_z].values 33 # スタートの観測位置・周波数から終わりの観測位置・周波数の範囲にあるBGS値を取り出し、1行に並べる 34 dataset = np.append(dataset, data.reshape(1, -1), axis=0) 35 # 先ほど作成した1行121列の値が適当な配列に縦方向に上の行のBGS値を追加する 36 column_num_z += 1 37dataset = np.delete(dataset, 0, 0) 38# datasetの0行目(適当に作成した値の行)を削除 39 40output = pd.DataFrame(dataset, index=df_STRAIN[0]) 41# 行のラベルがdf_STRAIN[0]となる配列datasetをoutputという名前で作成 42print(len(output)) # outputの要素数を取得、ターミナルに表示 43output = pd.DataFrame(output, columns=num_list, index=None) 44print(output)

入力に用いているcsvファイル(1行目と1列目はラベル)

observed_bgs.csv

1,1.000000,1.100000,1.200000,1.300000,1.400000,1.500000,1.600000,1.700000,1.800000,1.900000,2.000000, 211.055000,1.490014e-001,2.124409e-001,3.007518e-001,1.808967e-001,3.054668e-001,3.431774e-001,-4.210322e-002,4.011200e-002,3.539206e-001,3.262569e-001,-5.839732e-002, 311.060000,2.035853e-001,1.660419e-001,3.366550e-001,1.037324e-002,4.397776e-001,2.541221e-001,1.118989e-001,7.178671e-002,3.731853e-001,8.672985e-002,-7.714465e-002, 411.065000,1.820284e-001,1.257406e-001,1.539731e-001,1.634584e-001,2.943186e-001,2.839953e-001,2.182672e-001,3.542577e-001,4.995189e-001,2.484616e-001,3.013704e-001, 511.070000,4.253567e-001,4.271026e-001,4.260287e-001,3.171626e-001,3.713739e-001,6.300043e-001,5.840841e-001,4.365117e-001,4.673692e-001,5.320352e-001,4.835563e-001, 611.075000,5.439099e-001,5.400301e-001,6.477162e-001,7.950613e-001,5.961943e-001,6.699225e-001,6.539321e-001,6.780738e-001,6.614270e-001,5.516639e-001,6.593625e-001, 711.080000,1.010312e+000,8.952163e-001,1.013250e+000,9.671943e-001,1.008806e+000,1.011744e+000,1.089623e+000,9.396322e-001,7.608374e-001,1.021424e+000,8.930884e-001, 811.085000,9.134308e-001,8.684833e-001,1.025697e+000,1.118062e+000,9.602207e-001,1.076239e+000,8.398812e-001,1.025173e+000,1.003321e+000,9.614065e-001,1.049188e+000, 911.090000,8.405426e-001,8.809619e-001,8.758572e-001,7.283722e-001,9.289356e-001,1.013398e+000,7.797117e-001,8.230195e-001,7.077125e-001,9.423536e-001,8.999260e-001, 1011.095000,7.321427e-001,5.268207e-001,6.224229e-001,4.072632e-001,5.110210e-001,6.265857e-001,5.455612e-001,4.626299e-001,4.156494e-001,4.014521e-001,5.963694e-001, 1111.100000,3.861631e-001,2.377489e-001,3.210669e-001,5.498842e-001,3.387315e-001,3.426206e-001,3.899067e-001,5.276549e-001,3.496963e-001,4.343438e-001,3.474111e-001, 1211.105000,2.037398e-001,3.452732e-001,2.145458e-001,2.452674e-001,3.469219e-001,3.969867e-001,3.397168e-001,3.521850e-001,2.853276e-001,3.189511e-001,1.221901e-001,

strain.csv

17.69E-05 27.69E-05 37.69E-05 47.69E-05 57.69E-05 67.69E-05 77.69E-05 87.69E-05 97.69E-05 107.69E-05 117.69E-05 127.69E-05 137.69E-05 147.69E-05 157.69E-05 167.69E-05 177.69E-05 187.69E-05 197.69E-05 207.69E-05 217.69E-05 227.69E-05 237.69E-05 247.69E-05 257.69E-05 267.69E-05 277.69E-05 287.69E-05 297.69E-05 307.69E-05 317.69E-05 327.69E-05 337.69E-05 347.69E-05 357.69E-05 367.69E-05 377.69E-05 387.69E-05 397.69E-05 407.69E-05 417.69E-05 427.69E-05 437.69E-05 447.69E-05 457.69E-05 467.69E-05 477.69E-05 487.69E-05 497.69E-05 507.69E-05 517.69E-05 527.69E-05 537.69E-05 547.69E-05 557.69E-05 567.69E-05 577.69E-05 587.69E-05 597.69E-05 607.69E-05 617.69E-05 627.69E-05 637.69E-05 647.69E-05 657.69E-05 667.69E-05 677.69E-05 687.69E-05 697.69E-05 707.69E-05 717.69E-05 727.69E-05 737.69E-05 747.69E-05 757.69E-05 767.69E-05 777.69E-05 787.69E-05 797.69E-05 807.69E-05 817.69E-05 827.69E-05 837.69E-05 847.69E-05 857.69E-05 867.69E-05 877.69E-05 887.69E-05 897.69E-05 907.69E-05 917.69E-05 927.69E-05 937.69E-05 947.69E-05 957.69E-05 967.69E-05 977.69E-05 987.69E-05 997.69E-05 1007.69E-05 1017.69E-05 1027.69E-05 1037.69E-05 1047.69E-05 1057.69E-05 1067.69E-05 1077.69E-05 1087.69E-05 1097.69E-05 1107.69E-05 1117.69E-05 1127.69E-05 1137.69E-05 1147.69E-05 1157.69E-05 1167.69E-05 1177.69E-05 1187.69E-05 1197.69E-05 1207.69E-05 1217.69E-05

試したこと

二つ目のstrain.csvを行に並べ変えて実行しましたが、同じエラーが表示されました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

ValueError: all the input array dimensions for the concatenation axis must match exactly, but along dimension 1, the array at index 0 has size 121 and the array at index 1 has size 110

datasetdata.reshape(1, -1) の shape を表示してみると以下の様になっていて不一致になっています。

python

1 # スタートの観測位置・周波数から終わりの観測位置・周波数の範囲にあるBGS値を取り出し、1行に並べる 2 print(f'{dataset.shape=}', f'{data.reshape(1, -1).shape=}') 3 dataset = np.append(dataset, data.reshape(1, -1), axis=0) 4 5 => 6 dataset.shape=(1, 121) data.reshape(1, -1).shape=(1, 110)

どの様にすればよいのかは判りませんので、とりあえず zero padding しておきます。

python

1 # スタートの観測位置・周波数から終わりの観測位置・周波数の範囲にあるBGS値を取り出し、1行に並べる 2 # dataset = np.append(dataset, data.reshape(1, -1), axis=0) 3 data = data.reshape(1, -1) 4 dataset = np.append( 5 dataset, np.pad(data, ((0,0),(0,dataset.shape[1]-data.shape[1]))), 6 axis=0)

以上の変更を行って実行してみたのですが、最後のデータフレーム化でエラーになってしまいますので、そこも変更します。

python

1# 行のラベルがdf_STRAIN[0]となる配列datasetをoutputという名前で作成 2print(len(output)) # outputの要素数を取得、ターミナルに表示 3#output = pd.DataFrame(output, columns=num_list, index=None) 4output = pd.DataFrame(output.values, columns=num_list[1:], index=None) 5print(output)

実行結果

121 [0][0] [0][1] [0][2] [0][3] ... [10][7] [10][8] [10][9] [10][10] 0 0.203585 0.166042 0.336655 0.010373 ... 0.0 0.0 0.0 0.0 1 0.166042 0.336655 0.010373 0.439778 ... 0.0 0.0 0.0 0.0 2 0.336655 0.010373 0.439778 0.254122 ... 0.0 0.0 0.0 0.0 3 0.010373 0.439778 0.254122 0.111899 ... 0.0 0.0 0.0 0.0 4 0.439778 0.254122 0.111899 0.071787 ... 0.0 0.0 0.0 0.0 .. ... ... ... ... ... ... ... ... ... 116 0.000000 0.000000 0.000000 0.000000 ... 0.0 0.0 0.0 0.0 117 0.000000 0.000000 0.000000 0.000000 ... 0.0 0.0 0.0 0.0 118 0.000000 0.000000 0.000000 0.000000 ... 0.0 0.0 0.0 0.0 119 0.000000 0.000000 0.000000 0.000000 ... 0.0 0.0 0.0 0.0 120 0.000000 0.000000 0.000000 0.000000 ... 0.0 0.0 0.0 0.0 [121 rows x 121 columns]

投稿2022/02/02 17:57

melian

総合スコア20001

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

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

11yuu

2022/02/02 18:12

丁寧に説明と訂正して頂きありがとうございました。データの形気を付けます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.44%

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

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

質問する

関連した質問