前提・実現したいこと
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を行に並べ変えて実行しましたが、同じエラーが表示されました。
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/02/02 18:12