Python/파이썬 기초

파이썬 절대값 함수(abs, np.abs) 사용법 및 직접 구현 예제

jimmy_AI 2022. 4. 7. 22:43
반응형

파이썬 절댓값 내장 함수 종류, 절댓값 구현하기

이번 글에서는 파이썬에서 절대값을 구할 수 있는 함수들인

내장 함수 abs()와 넘파이 모듈 내 abs() 함수의 사용법 및 차이를 비교해보고,

절댓값 함수를 간단하게 실제로 구현해보는 예시까지 살펴보도록 하겠습니다.

 

 

절대값 내장 함수 abs

먼저, 별도의 라이브러리 import가 필요 없는 내장 함수 abs()의 사용 예시를 보겠습니다.

해당 절대값 함수의 사용 방법은 abs(숫자) 형태로 적어주시면 되는데,

이 때, input 숫자로는 정수, 실수 및 복소수가 모두 들어갈 수 있습니다.

 

일단, 정수 및 실수에 대해서는 절대값 정의대로 양수 혹은 0이면 그대로,

음수이면 -1을 곱하여 양수로 바뀐 값이 반환됩니다.

# 정수의 절대값
abs(5) # 5
abs(-27) # 27

# 실수의 절대값
abs(3.5) # 3.5
abs(-10.24) # 10.24

 

그러나, 복소수의 경우에는 절댓값 연산이 다소 다른 방식으로 수행되는데,

실수부와 허수부의 제곱합에 루트를 취한 크기가 반환됩니다.

 

예를 들어, 1 + 2j라는 수에서는 실수부인 1과 허수부인 2에 대하여

1^2 + 2^2 = 5라는 제곱합을 구하고, 이에 루트를 취한 루트 5가 절대값 결과가 됩니다.

# 복소수의 절대값
abs(-4j) # 4.0
abs(1 + 2j) # 2.23606797749979
반응형

Numpy 패키지의 abs 함수

파이썬 내의 수를 다루는 대표적인 라이브러리인 넘파이에서도

별도의 절대값 abs() 함수를 제공합니다.

 

np.abs도 내장 함수와 같은 원리도 정수, 실수 및 복소수에 대한 절댓값 연산이 진행되지만,

리스트 혹은 배열 등의 자료에서 내부의 각 원소들에 대하여 통째로 절대값을 취한 결과

반환받는 것이 가능하다는 차이점이 있습니다.

import numpy as np

# 단일 수에 대한 절대값(내장 함수와 동일)
np.abs(-7) # 7
np.abs(3.45) # 3.45
np.abs(-12.78) # 12.78
np.abs(3 + 4j) # 5.0

# 리스트, 배열 내 값들에 통째로 절대값 취하기
np.abs([1, 3, -5, -7]) # array([1, 3, 5, 7])
np.abs(np.array([-2.5, -4.13, -6j, 0])) # array([2.5 , 4.13, 6.  , 0.  ])

 

 

파이썬 절대값 구현 예제

마지막으로, 정수, 실수 및 복소수 input에 대하여 절댓값 계산을 수행할 수 있는

abs와 유사한 함수를 직접 구현해본 예시를 다루어보겠습니다.

 

받은 input 숫자의 타입을 검사하여 정수 혹은 실수인 경우복소수인 경우,

그리고 숫자가 아닌 input에 대한 예외처리로 경우를 나눠

함수를 구현한 예시 코드는 아래와 같습니다.

def my_abs(num):
    if type(num) == type(1) or type(num) == type(1.0): # 정수 혹은 실수인 경우
        if num >= 0: return num
        else: return -num
    elif type(num) == type(1j): # 복소수인 경우
        return (num.real ** 2 + num.imag ** 2) ** (1/2)
    else: # 숫자가 아닌 경우
        raise TypeError('숫자를 입력해 주세요!')

 

직접 구현한 절댓값 함수를 실행한 결과, input의 종류에 따른

연산 진행 결과가 의도한대로 잘 출력되는 것을 확인할 수 있었습니다.

my_abs(3) # 3
my_abs(-5) # 5
my_abs(9.9) # 9.9
my_abs(-2.75) # 2.75
my_abs(12.5j) # 12.5
my_abs(3 - 4j) # 5.0
my_abs('abc') # TypeError: 숫자를 입력해 주세요!