Categories: Python

【Python】絶対値を取得する方法【abs関数の使い方】

この記事では、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関数では求めることができません。複素数の絶対値については後述します。

リストの絶対値

リストやタプルに格納されている要素をまとめて絶対値にしたい場合は、numpyabsolute関数を使います。 戻り値は 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 で絶対値を取得する方法を解説しました。

値の向きを考慮せず使用したい場合は絶対値を使いましょう!

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago