この記事では、Pythonで絶対値を取得する方法を紹介します。
絶対値とは 0 からの距離を表す値 です。「+」や「-」などの符号(向き)が異なっていても同じ距離を示します。つまりは、向きを無視して大きさのみを表す値です。
例えば、2 と -2 は、0 からの距離が 2 なのでどちらも絶対値は 2 となります。
それでは、絶対値を取得する方法を見ていきましょう!
絶対値を取得する方法
絶対値を求めるには、組み込み関数である abs
関数 を使います。
abs(x)
また、math
モジュールの fabs
関数 を使うことでも絶対値を取得することができます。
import math
math.fabs(x)
これらの関数は、引数x
に指定した値の絶対値を返します。
print(abs(-1))
print(abs(-2.2))
from math import fabs
print(fabs(-1))
print(fabs(-2.2))
実行結果
1
2.2
1.0
2.2
abs
関数はint
型が指定された場合、int
型で結果を返すのに対して math.fabs
関数は、必ずfloat
型で結果を返します。
また、abs
関数では複素数の絶対値を求めれるのに対し、math.fabs
関数では求めることができません。複素数の絶対値については後述します。
リストの絶対値
リストやタプルに格納されている要素をまとめて絶対値にしたい場合は、numpy
のabsolute
関数を使います。 戻り値は numpy.ndarray
となります。
import numpy as np
l = [-1, -2, -3]
print(np.absolute(l))
t = (-4, -5, -6)
print(np.absolute(t))
実行結果
[1 2 3]
[4 5 6]
また、absolute
関数はabs
関数と略して使用可能です。
import numpy as np
l = [-1, -2, -3]
print(np.abs(l))
t = (-4, -5, -6)
print(np.abs(t))
複素数の絶対値
abs
関数に複素数を指定するとmagnitude
が返される。
magnitude
は、a + bj
のとき
となります。
c = 1 + 2j
print(abs(c))
実行結果
2.23606797749979
Link絶対値 - Wikipedia
オブジェクトの絶対値
abs
関数はオブジェクトに定義されている__abs__
メソッドの結果を返します。
つまり、ユーザー定義クラスに__abs__
メソッドを実装することで任意の絶対値を返すクラスを定義できるということです。
class MyAbs:
def __abs__(self):
return '絶対値'
ma = MyAbs()
print(abs(ma))
実行結果
絶対値
__abs__
メソッドで定義した値を絶対値として受け取ることができました。
絶対値を求める関数
自分で絶対値を求める関数を実装することもできます。基本的に組み込み関数の方が高速なので単純に絶対値を求める場合には特に有用性はありません。
絶対値を求めるには、受け取った数値を二乗した後に平方根を求めることで符号が付いていない数値を受け取ることができます。
from math import sqrt # 平方根を求める関数
def abs_func(x):
return sqrt(x ** 2)
print(abs_func(-3))
print(abs_func(-0.6))
実行結果
3.0
0.6
簡単に絶対値を求めることができました。
まとめ
この記事では、Python で絶対値を取得する方法を解説しました。
値の向きを考慮せず使用したい場合は絶対値を使いましょう!
それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ