前提・実現したいこと
scipyの時系列データ補間において,csvファイル(4列分のデータ)をまとめて補間したいと考えています.
添付画像のような4列分の時系列データを使用し,そこから時間(最初の列)を除いた3列を補間したいと考えています.
発生している問題・エラーメッセージ
現在作成途中なのですが,2列目のデータは補間できてそうです.
それを利用して3,4列目のデータを補間しようと試みているのですが,なぜか2列目のデータがそのまま使用されてしまいます.
初学者のため簡単なミスも多いかもしれませんが,解決策があればご助言いただければ幸いです.
エラーメッセージはなく,print(zA)で中身を確認してもyAと同じ内容になっています,
該当のソースコード
python3.x(jupyterで作成)
1import matplotlib.pyplot as plt 2import numpy as np 3import pandas as pd 4import csv 5from scipy.interpolate import interp1d 6 7 8#読み込むcsv. 9test = 't.csv' 10 11#csvを読み込んでdata_arrayに格納 12with open(test, mode='r', newline='') as f_in: 13 reader = csv.reader(f_in) 14 data_array = [row for row in reader] 15 16#data_array,配列を定義する 17plot_x = [] #time 18plot_y = [] #data1 19plot_z = [] #data2 20plot_a = [] #data3 21for i in data_array: 22 plot_x.append(float(i[0])) 23 plot_y.append(float(i[1])) 24 plot_z.append(float(i[2])) 25 plot_a.append(float(i[3])) 26# print(plot_z) #ここまではOK? 27 28xs = min(plot_x) 29xm = max(plot_x) 30 31#データ補間で合計データを101個にする 32tt = np.linspace(xs, xm, 101) 33#3d_spline補間 34f = interp1d(plot_x, plot_y, kind="cubic") 35y = f(tt) 36#補間後のx,yをエクセルで使いやすいようにするためにnp.array使用 37yA = np.array([tt, y]) 38yA_t = yA.T 39#print(yA) 40#print(type(yA)) 41#print(yA_t) 42#print(type(yA_t)) 43 44#次は3列目のデータを補間 45ttz = np.linspace(xs, xm, 101) 46#3d_spline補間 47fz = interp1d(plot_x, plot_z, kind="cubic") 48z = f(ttz) 49#補間後のx,zをエクセルで使いやすいようにするためにnp.array使用 50zA = np.array([ttz, z]) 51zA_t = zA.T 52#print(zA) しかし,yAと同じ値が表示されてしまう・・・ 53 54
試したこと
内容の確認,teratailでの類似質問の検索,pythonでのspline補間に関する内容を調べてみました.
しかし,探し方が悪いためか解決の糸口がつかめない状態です.
まだ使い始めたばかりでわからない点も多々あるのですが,教えていただければ幸いです.
何卒よろしくお願いいたします.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/22 02:31