Pythonのabs()関数を徹底解説!絶対値の計算と活用
Pythonで数値計算を行う際、数の正負に関係なく、その「大きさ」だけを知りたい場合があります。たとえば、誤差の許容範囲をチェックしたり、距離を計算したりするようなケースです。このようなときに活躍するのが、Pythonの組み込み関数である**abs()
関数**です。この記事では、abs()
関数の基本的な使い方から、なぜこの関数が重要なのか、そして具体的な活用事例までを初心者にもわかりやすく解説しますします。
abs()
関数とは?Pythonにおける絶対値の計算
Pythonのabs()
関数は、引数として渡された数値の**絶対値(absolute value)**を返す組み込み関数です。絶対値とは、数値を数直線上で0からどれだけ離れているかを示す非負の値で、簡単に言えば「符号を取り除いた値」のことです。
基本的な使い方:様々な数値の絶対値
abs()
関数は、整数、浮動小数点数、さらには複素数に対しても使用できます。
# 整数の絶対値
print(abs(-5)) # 出力: 5
print(abs(10)) # 出力: 10
print(abs(0)) # 出力: 0
# 浮動小数点数の絶対値
print(abs(-3.14)) # 出力: 3.14
print(abs(2.7)) # 出力: 2.7
# 複素数の絶対値
# 複素数 a + bj の絶対値は √(a^2 + b^2) で計算されます。
print(abs(3 + 4j)) # 出力: 5.0 (√(3^2 + 4^2) = √(9 + 16) = √25 = 5)
print(abs(-1 - 2j)) # 出力: 2.23606797749979 (√( (-1)^2 + (-2)^2 ) = √(1 + 4) = √5)
abs()
関数の重要性と活用事例
abs()
関数は、一見するとシンプルな機能ですが、プログラミングのさまざまな場面で非常に役立ちます。
1. 差分や距離の計算
2つの数値間の「差の大きさ」を知りたい場合によく使われます。結果が正の値になるため、どちらの数値が大きいかを気にせずに差を比較できます。
# 目標値と実測値の差の絶対値
target = 100
actual = 95
error = abs(target - actual)
print(f"誤差: {error}") # 出力: 誤差: 5
# 2点間の距離 (1次元の場合)
point_a = -7
point_b = 3
distance = abs(point_a - point_b)
print(f"2点間の距離: {distance}") # 出力: 2点間の距離: 10
2. 誤差の許容範囲チェック
特定の許容誤差範囲内に収まっているかを判定する際に利用できます。
actual_temp = 25.3
set_point_temp = 25.0
tolerance = 0.2
if abs(actual_temp - set_point_temp) <= tolerance:
print("温度は許容範囲内です。")
else:
print("温度が許容範囲外です。")
3. ソート順のカスタマイズ
リストの要素を絶対値の小さい順にソートしたい場合、sort()
メソッドやsorted()
関数のkey
引数にabs
を指定できます。
numbers = [1, -5, 3, -2, 0, 4]
sorted_by_abs = sorted(numbers, key=abs)
print(f"絶対値でソート: {sorted_by_abs}") # 出力: 絶対値でソート: [0, 1, -2, 3, 4, -5]
4. ゼロ除算の回避
数値がゼロに近いかどうかを絶対値で判断し、ゼロ除算エラーを回避するロジックの一部として使用されることがあります(ただし、浮動小数点数の比較には注意が必要です)。
denominator = 0.0000001
if abs(denominator) < 1e-9: # 非常に小さい数であればゼロとみなす
print("分母がゼロに近すぎます。")
else:
result = 1 / denominator
print(f"計算結果: {result}")
5. 複素数の「大きさ」の比較
電気工学や信号処理など、複素数を扱う分野では、その「大きさ」(振幅やマグニチュード)が重要になります。abs()
関数は、複素数のマグニチュードを直接計算できるため、非常に便利です。
impedance1 = 10 + 5j
impedance2 = 8 - 7j
if abs(impedance1) > abs(impedance2):
print("インピーダンス1の方が大きいです。")
else:
print("インピーダンス2の方が大きいです。")
abs()
関数と混同しやすい操作
負の数を正の数に変換するだけではない
abs()
は単に負の数からマイナス符号を取り除くだけではありません。正の数やゼロに対してはそのままの値を返しますし、複素数に対しては前述の通り特別な計算(マグニチュード)を行います。
math.fabs()
との違い(浮動小数点数のみ)
Pythonのmath
モジュールにはfabs()
という関数もありますが、これは浮動小数点数に特化しており、常に浮動小数点数を返します。また、複素数には使用できません。
import math
print(abs(-5)) # 出力: 5 (int)
print(math.fabs(-5)) # 出力: 5.0 (float)
print(abs(3.14)) # 出力: 3.14 (float)
print(math.fabs(3.14)) # 出力: 3.14 (float)
# print(math.fabs(3 + 4j)) # TypeError: can't convert complex to float
通常、整数や複素数も含む汎用的な絶対値計算にはabs()
を使用するのが一般的です。
まとめ
Pythonのabs()
関数は、数値の「絶対値」を簡単に計算できる基本的ながら非常に強力なツールです。整数、浮動小数点数、複素数など、様々な数値型に対応し、その符号を取り除いた大きさや、複素数の場合は原点からの距離を返します。
abs()
関数は、引数に指定された数値の絶対値を返します。整数、浮動小数点数、複素数に対応しています。
差分や距離の計算、誤差チェック、ソート順のカスタマイズ、複素数の大きさの比較など、多くの場面で活用されます。
math.fabs()
は浮動小数点数に特化しており、常にfloat
を返します。
この関数を理解し適切に活用することで、Pythonでの数値計算の幅が広がり、より柔軟なプログラムを作成できるようになるでしょう。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座