【FFT】MATLAB、Pythonで株価予測 その35【IFFT⑭】

【FFT】MATLAB、Pythonで株価予測 その35【IFFT⑭】 株価予測
【FFT】MATLAB、Pythonで株価予測 その35【IFFT⑭】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/stock-predict-matlabpython-backnumber/

はじめに

前回は、MATLABのインデックス検索である、線形インデックス検索と論理インデックス検索の挙動を確認した。
かなり便利なアクセス方式で読み出しだけでなく、書き込みも可能。

そして、Python側も似たようなことができるか確認している。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

技術者太郎

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

Python(Numpy)による論理インデックス検索と線形インデックス検索

太郎くん
太郎くん

前回、MATLABでやった論理インデックス検索と線形インデックス検索がPythonでもできるか
ってところだねー。

フクさん
フクさん

まぁPythonというかNumpyだな。
通常のPython仕様だと論理インデックス検索、線形インデックス検索に相当するものはないな。

太郎くん
太郎くん

ベクトル、行列に関してはNumpyを使用すること前提なことろあるし、
それでも良いとは思うけど。

論理インデックス検索と線形インデックス検索の実施コードとその結果

フクさん
フクさん

これも、コードを見てしまった方が早いだろう。

>>> import numpy as np
# 数列生成
>>> A=np.arange(11,20)

# 3x3の正方行列化
>>> A=np.reshape(A,(3,3))
>>> A
array([[11, 12, 13],
       [14, 15, 16],
       [17, 18, 19]])

# 線形インデックス検索
>>> A[[0, 0, 1],[0, 1, 1]]
array([11, 12, 15])

# 論理インデックス作成
>>> B=(11<A) & (A<16)
>>> B
array([[False,  True,  True],
       [ True,  True, False],
       [False, False, False]])

# 論理インデックス検索
>>> A[B]
array([12, 13, 14, 15])

コードとその結果を見て

太郎くん
太郎くん

結論としてはNumpyもMATLABと同じことはできるってことだね。

フクさん
フクさん

ただ、線形インデックス検索の性質が異なるな。

太郎くん
太郎くん

そこは僕も気になった。
MATLABの場合はベクトルでも行列でも先頭からのオフセットを入れればOKだったけど、
Numpyの場合は、キッチリ行と列をそれぞれ指定しないとダメっぽいね。

フクさん
フクさん

そうだね。
MATLABと似たようなアクセスをしたい場合は、以下のように書くと行列からベクトルになるんで、近似の書き方が可能になるはずだ。

>>> A=np.reshape(A,-1)
>>> A[[0,3,4]]
array([11, 14, 15])
太郎くん
太郎くん

あ、そういえば、MATLABは1オリジン、Pythonは0オリジンだから、
その点も注意だね。

フクさん
フクさん

そうそう。
ここら辺も合わせてくれると移植時に楽できるんだけどねー。
まぁ大元の言語仕様が違うから仕方ないことなのだろう。

まとめ

フクさん
フクさん

まとめだよ。

  • Python(Numpy)による論理インデックス検索と線形インデックス検索が可能か確認。
    • 一応、可能そう。
    • ただし、行列に対する線形インデックス検索はちゃんと行と列を指定する必要あり。
    • MATLABと同様にするにはrehapeでベクトルに直す必要がある。
    • あと、MATLABは1オリジン、Pythonは0オリジンな点も注意。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました