こんにちは、ヒガシです。
今回は指定したデータ数で任意の点を順番に通過する時系列データ配列を構築するサンプルコードをご紹介したいと思います。
具体的にはこんな感じです。
[-200,0,-100,100,400]を通過する長さ400のデータを作れ、という指示をすると以下のような時系列データを作成してくれる、というものです。
指定した点の間はすべて線形補間していきます。
あなたのやりたいことと一致していれば、ぜひ続きをご覧ください。
必要なライブラリ一覧
★numpy:配列データを生成するために使います。
★matplotlib:生成したデータがうまくできているかの確認用です。
どちらもよく使うのですでにインストール済みとは思いますが、念のため。
任意形状の時系列データを生成するサンプルコード
それでは本題である任意形状の時系列データを生成するサンプルコードをご紹介します。
import numpy as np
import matplotlib.pyplot as plt
list=[-200,0,-100,100,400]
num_data_total=400
def make_1d_data(list,num_data_total):
num_data=num_data_total+int(num_data_total/len(list))
data=[list[0]]
ind=1
for i in range(num_data_total+1):
a=(list[ind]-list[ind-1])/(num_data_total/(len(list)-1))
b=data[-1]-i*a
y=a*(i+1)+b
if a>0 and y>=list[ind]:
ind=ind+1
elif a<0 and y<=list[ind]:
ind+=1
ind=min(len(list)-1,ind)
data.append(y)
data=np.array(data)[:num_data_total+1]
return data
data=make_1d_data(list,num_data_total)
plt.plot(data)
plt.grid()
plt.title(list)
plt.show()
あなたがやるべきことは、3行目の通過する点を指定すること、4行目の時系列での総データ数を指定するところだけです。
ちなみに指定した点数よりもトータルデータ数が少ない場合はうまく機能しませんのでご注意ください。
サンプルコードの実際の使用例1
それでは実際に使用してみましょう。
まずは[0,-5,-7,4,0]、長さ150の場合です。
問題なく実行できていそうですね。
サンプルコードの実際の使用例2
次は[18,-11,0,32,-22,10,-10,-20,20]、長さ80の場合です。
複雑な条件でも問題なく実行できていますね。
まとめ
ということで今回は任意形状の時系列データを作成する関数を作成してみました。
AI系の業務をしているとたまにこんなことをする必要が出てくるのでこの記事のことを頭の片隅にでもおいておいていただけると幸いです。
それではまた!
コメント