【NumPy】正負の値に対し1、または0を返すヘヴィサイドの階段関数(np.heavside)[Python]

  • URLをコピーしました!
目次

NumPy

前回、Pythonのmatplotlibでガウス分布とローレンツ分布を合わせたフォークト関数(voigt)の作成方法と左右非対称化の方法を紹介しました。

今回はNumPyで正負の値に対し1、または0を返すヘヴィサイドの階段関数(np.heavside)を紹介します。

それでは始めていきましょう。

ヘヴィサイドの階段関数

ヘヴィサイドの階段関数とはある値が0より小さい場合は0を返し、0より大きい場合は1を返す関数です。

使用方法はNumPyをインポートし、「np.heaviside(値, 0の時に返す値)」として使います。

この引数で分かる様にNumPyのheaviside関数では0の時に任意の値を返すことができます。

ただしそれ以外の場合は0か1がしか返せません。

import numpy as np

print(np.heaviside(-5, 0.5))
print(np.heaviside(-1, 0.5))
print(np.heaviside(0, 0.5))
print(np.heaviside(1, 0.5))
print(np.heaviside(5, 0.5))

実行結果
0.0
0.0
0.5
1.0
1.0

グラフとしてみてみる

ヘヴィサイドの階段関数の挙動をグラフとしてみるには、「np.heaviside(Xの値のリスト, 0の時に返す値)」とします。

このXの値のリストは通常のリストでもNumPyのndarrayでも大丈夫です。

import numpy as np
import matplotlib.pyplot as plt

x_list = range(-10, 10)

y_list = np.heaviside(x_list, 0.5)

fig = plt.figure()
plt.clf()

plt.plot(x_list, y_list)

plt.show()

実行結果

range関数では小数のリストを作成できないので、np.arange関数を使う方が階段関数と言われる様なグラフを描くことができます。

import numpy as np
import matplotlib.pyplot as plt

x_list = np.arange(-10, 10, 0.1)

y_list = np.heaviside(x_list, 0.5)

fig = plt.figure()
plt.clf()

plt.plot(x_list, y_list)

plt.show()

実行結果

またステップが変わる位置を変更したい場合は「np.heaviside(Xの値のリスト-ステップが変わる位置, 0の時に返す値)」とします。

この場合はXの値のリストはNumPyのndarrayである必要があります(リストに対して引き算するため)。

import numpy as np
import matplotlib.pyplot as plt

x_list = np.arange(-10, 10, 0.1)

y_list = np.heaviside(x_list-5, 0.5)

fig = plt.figure()
plt.clf()

plt.plot(x_list, y_list)

plt.show()

実行結果

次回は値の正負を判別・取得するnp.sign、np.signbitを紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次