目次
NumPy
前回、PythonのNumPyで正負の値に対し1、または0を返すヘヴィサイドの階段関数(np.heavside)を紹介しました。
【NumPy】正負の値に対し1、または0を返すヘヴィサイドの階段関数(np.heavside)[Python]
NumPy 前回、Pythonのmatplotlibでガウス分布とローレンツ分布を合わせたフォークト関数(voigt)の作成方法と左右非対称化の方法を紹介しました。 今回はNumPyで正負の値…
今回はNumPyで数値の正負を判別・取得するnp.sign、np.signbitを紹介します。
それでは始めていきましょう。
数値の正負に対して1、-1を返すnp.sign
まずは数値の正負に対して1、-1を返すnp.signを紹介します。
「np.sign(数値)」とすると、数値が正の数の場合「1」を、負の数の場合「-1」を返します。
また数値が0の場合は「0」を返します。
import numpy as np
val1 = 5
val2 = -5
val3 = 0
print(np.sign(val1))
print(np.sign(val2))
print(np.sign(val3))
実行結果
1
-1
0
数値が欠損値NaNの場合はnanが返ってきます。
import numpy as np
val4 = np.nan
print(np.sign(val4))
実行結果
nan
数値はリストとして与えることもでき、その場合は結果がリストで返ってきます。
import numpy as np
val5 = [1, -2, 3, -4, 5]
print(np.sign(val5))
実行結果
[ 1 -1 1 -1 1]
数値以外を与えてしまうと、エラーとなります。
import numpy as np
val6 = "val"
print(np.sign(val6))
実行結果
---------------------------------------------------------------------------
UFuncTypeError Traceback (most recent call last)
Cell In[3], line 5
1 import numpy as np
3 val6 = "val"
----> 5 print(np.sign(val6))
UFuncTypeError: ufunc 'sign' did not contain a loop with signature matching
types <class 'numpy.dtypes.StrDType'> -> None
数値の正負に対してbool値を返すnp.signbit
数値の正負に対してbool値(True/False)を取得したい場合はnp.signbitを用います。
使い方は「np.signbit(数値)」で、数値が正の数の場合「False」を負の数の場合「True」を返します。
数値が「0」や「NaN」の場合は「False」を返します。
import numpy as np
val1 = 5
val2 = -5
val3 = 0
val4 = np.nan
print(np.signbit(val1))
print(np.signbit(val2))
print(np.signbit(val3))
print(np.signbit(val4))
実行結果
False
True
False
False
np.signと同様、値にはリストを与えることもでき、その場合は結果がリストとして返されます。
import numpy as np
val5 = [1, -2, 3, -4, 5]
print(np.signbit(val5))
実行結果
[False True False True False]
数値以外を与えるとエラーとなります。
import numpy as np
val6 = "val"
print(np.signbit(val6))
実行結果
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[4], line 5
1 import numpy as np
3 val6 = "val"
----> 5 print(np.signbit(val6))
TypeError: ufunc 'signbit' not supported for the input types, and the inputs
could not be safely coerced to any supported types according to the casting rule ''safe''
次回はNumPyでリスト内の要素で条件に合った要素のインデックスを取得したり、置換するnp.whereを紹介します。
ではでは今回はこんな感じで。
コメント