【Python応用】Pythonと数値計算-SciPyを用いたデータ操作-

Python

ここでは、PythonにおけるSciPyを用いたデータ操作方法について解説しています。

スポンサーリンク
スポンサーリンク

SciPyとは

SciPyとはNumPyの拡張機能を基に構築されている科学計算を行うためのライブラリです。

特徴としては信号処理、遺伝的アルゴリズム、フーリエ変換等の工学系の科学計算が容易にできる点です。

公式サイト

SciPyのインストール

SciPyを使用する前には、NumPyも入れておく必要があります。NumPyを基にSciPyが構築されているためです。また、SciPyはmatplotlibと一緒に使用される場合があるのでこちらも入れておきましょう。

$ pip install numpy

NumPyのインストールです。

$ pip install matplotlib

matplotlibのインストールです。

$ pip install scipy

SciPyのインストールです。

SciPyを用いた使用例

from scipy import signal
import numpy as np
import matplotlib.pyplot as plt

#1---パルスの生成
sig = np.repeat([0., 1., 0.], 100)
win = signal.windows.hann(100)

#2---2つのN次元配列を畳み込み
filtered = signal.convolve(sig, win, mode='same') / sum(win)

#3---グラフ化
fig, (ax_orig,ax_win,ax_filt) = plt.subplots(3, 1, sharex=True)
ax_orig.plot(sig)
ax_orig.set_title('pulse')
ax_orig.margins(0, 0.1)
ax_win.plot(win)
ax_win.set_title('pulse2')
ax_win.margins(0, 0.1)
ax_filt.plot(filtered)
ax_filt.set_title('Filtered signal')
ax_filt.margins(0, 0.1)
fig.tight_layout()
fig.savefig("plot.png")

上記がプログラムになります。このプログラムはSciPyサイトの「scipy.signal.convolve」のサンプルコードになります。

それでは解説していきます。

#1---パルスの生成
sig = np.repeat([0., 1., 0.], 100)
win = signal.windows.hann(100)

1の部分ではパルスを生成しています。最初に0、1を100回繰り返したものを生成しています。

次にハン窓を生成しています。詳しい解説はこちらを参照下さい。

#2---2つのN次元配列を畳み込み
filtered = signal.convolve(sig, win, mode='same') / sum(win)

2の部分では2つのN次元配列を畳み込みしています。「scipy.signal.convolve(in1, in2, mode=’full’, method=’auto’)」引数はそれぞれ、in1が最初の入力。in2が2番目の入力。 in1と同じ次元数である必要があります。modeが出力のサイズを示す文字列になります。

詳しい解説は公式サイトを覗いて下さい。

#3---グラフ化
fig, (ax_orig,ax_win,ax_filt) = plt.subplots(3, 1, sharex=True)

3の部分ではmatplotlibでグラフ化しています。

グラフ化しているものは元のパルス、インパルス応答フィルタ、フィルタリング信号になります。

fig.savefig("plot.png")

最後に画像として保存しています。

結果

フィルタされた信号が出力されていることが確認できました。

SciPyには様々なライブラリがあり、簡単に計算を行うことができるので便利です。

SciPyの便利なライブラリ

項目内容
constants物理定数と変換係数
cluster階層的クラスタリング、ベクトル量子化、K平均
fftpack離散フーリエ変換アルゴリズム
integrate数値積分ルーチン
interpolate補間ツール
ioデータ入出力
linalg線形代数ルーチン
miscその他(例:画像操作)
ndimage多次元画像処理のためのさまざまな機能
optimize線形計画法を含む最適化アルゴリズム
signal信号処理ツール
sparseスパース行列と関連アルゴリズム
spatialKD木、最近傍、距離関数
special特別な機能
stats統計関数

様々な便利なライブラリがあることが分かります。

その他、SciPyを用いた使用例

項目内容
Under construction . . .Under construction . . .
タイトルとURLをコピーしました