Python에서 절대값을 찾는 방법

2023. 12. 17. 10:28python/basic

절대값 정의
절대값 함수를 처음부터 구현
Python에서 내장 abs() 함수 사용
숫자의 절대값 계산
NumPy 배열 및 pandas 시리즈에서 abs() 호출
abs() 개체에 대한 동작 사용자 정의
절대값을 사용하면 크기 또는 크기 방향에 관계없이 숫자 또는 벡터와 같은 객체의 개체입니다. 실수는 0을 무시할 때 두 방향 중 하나를 가질 수 있습니다. 방향은 양수이거나 음수일 수 있습니다. 반면에 복소수 및 벡터에는 더 많은 방향이 있을 수 있습니다.




이 함수는 변경 없이 0보다 크거나 같은 값을 반환합니다. 반면에 0보다 작은 값은 부호가 마이너스에서 플러스로 반전됩니다. 대수학적으로 이는 숫자의 제곱근을 취하는 것과 동일합니다.




벡터는 숫자와 마찬가지로 방향 및 크기에 대한 정보를 전달합니다. 벡터는 물리량이지만 1차원 이상입니다.

참고: 벡터를 보는 방법에는 두 가지가 있습니다. 바운드 벡터는 공간에 있는 고정점의 순서쌍인 반면, 자유 벡터는 절대 위치를 공개하지 않고 A 지점에서 B 지점으로의 좌표 변위만 알려줍니다. 예를 들어 다음 코드 조각을 고려해보세요.

A = [1, 2, 3]
B = [3, 2, 1]

bound_vector = [A, B]
print(bound_vector)

print()

free_vector = [b - a for a, b in zip(A, B)]
print(free_vector)

[[1, 2, 3], [3, 2, 1]]

[2, 0, -2]
바운드 벡터는 두 점을 모두 둘러싸서 꽤 많은 정보를 제공합니다. 대조적으로 자유 벡터는 A에서 B로의 이동만을 나타냅니다. 최종 지점 B에서 초기 지점 A를 빼서 자유 벡터를 계산할 수 있습니다. 그렇게 하는 한 가지 방법은 연속된 좌표 쌍을 반복하는 것입니다.

Python에서 절대값을 찾는 방법 작성자Bartosz Zaczyński 2022년 8월 17일 댓글 3개 기초 파이썬 공유하다 공유하다 이메일 목차

절대값 정의 Python에서 절대값 함수 구현 내장된 abs() 함수를 숫자와 함께 사용하기 정수 및 부동 소수점 숫자 복소수 분수와 소수 다른 Python 객체에서 abs() 호출 NumPy 배열 및 팬더 시리즈 나만의 데이터 유형 결론 광고를 제거하다 절대값은 수학, 물리학, 공학에서 흔히 사용됩니다. 절대값에 대한 학교의 정의는 간단해 보일 수 있지만 실제로는 다양한 각도에서 개념을 볼 수 있습니다. Python에서 절대값으로 작업하려는 경우 올바른 위치에 오셨습니다.

이 튜토리얼에서는 다음 방법을 배웁니다.

절대값 함수를 처음부터 구현 Python에서 내장 abs() 함수 사용 숫자의 절대값 계산 NumPy 배열 및 pandas 시리즈에서 호출abs() 아> 개체에 대한 동작 사용자 정의 >abs() 절대값 함수에 대한 수학적 지식이 녹슬었다고 해도 걱정하지 마세요. Python 코드를 더 자세히 살펴보기 전에 기억을 되살리는 것부터 시작하겠습니다. 그렇긴 하지만, 다음 섹션을 건너뛰고 바로 이어지는 핵심 세부 사항으로 바로 이동하세요.

샘플 코드: Python에서 절대값을 찾는 데 사용할 샘플 코드를 다운로드하려면 여기를 클릭하세요.

절대값 정의 절대값을 사용하면 크기 또는 크기 방향에 관계없이 숫자 또는 벡터와 같은 객체의 개체입니다. 실수는 0을 무시할 때 두 방향 중 하나를 가질 수 있습니다. 방향은 양수이거나 음수일 수 있습니다. 반면에 복소수 및 벡터에는 더 많은 방향이 있을 수 있습니다.

참고: 숫자의 절대값을 취하면 숫자의 부호 또는 더 일반적으로는 방향에 대한 정보를 잃게 됩니다.

온도 측정을 예로 들어보겠습니다. 온도계에 -12°C가 표시되면 영하 12°C라고 말할 수 있습니다. 마지막 문장에서 온도를 어떻게 크기, 12, 부호로 분해했는지 주목하세요. 영하라는 문구는 섭씨 0도 이하와 같은 의미입니다. 온도의 크기나 절대값은 훨씬 따뜻한 +12°C의 절대값과 동일합니다.

수학적 표기법을 사용하면 𝑥의 절대값을 조각별 함수로 정의할 수 있습니다. 이 함수는 입력 값의 범위에 따라 다르게 동작합니다. . 절대값에 대한 일반적인 기호는 두 개의 수직선으로 구성됩니다.

조각별 함수로 정의된 절대값 조각별 함수로 정의된 절대값 이 함수는 변경 없이 0보다 크거나 같은 값을 반환합니다. 반면에 0보다 작은 값은 부호가 마이너스에서 플러스로 반전됩니다. 대수학적으로 이는 숫자의 제곱근을 취하는 것과 동일합니다.

대수적으로 정의된 절대값 대수적으로 정의된 절대값 실수를 제곱하면 처음에 음수였던 경우에도 항상 양수 결과를 얻습니다. 예를 들어, -12의 제곱과 12의 제곱은 144와 같은 값을 갖습니다. 나중에 144의 제곱근을 계산하면 빼기 기호 없이 12만 얻게 됩니다.

기하학적으로 절대값은 원점으로부터의 거리로 생각할 수 있으며, 이는 이전 온도 판독의 경우:

수직선의 절대값 수직선의 절대값 이 거리를 계산하려면 온도 판독값(-12°C - 0°C = -12°C)에서 원점을 빼거나 그 반대로(0°C - (-12°C) = +12°C) ), 결과의 부호를 삭제합니다. 여기서는 0을 빼도 큰 차이가 없지만 기준점이 때때로 이동될 수 있습니다. 이는 벡터의 원점이 되는 공간의 고정된 지점에 바인딩된 벡터의 경우입니다.

벡터는 숫자와 마찬가지로 방향 및 크기에 대한 정보를 전달합니다. 는 물리량이지만 1차원 이상입니다. 예를 들어, 떨어지는 눈송이의 속도를 3차원 벡터로 표현할 수 있습니다.

이 벡터는 좌표계 원점을 기준으로 눈송이의 현재 위치를 나타냅니다. 또한 공간을 통해 눈송이의 방향과 이동 속도를 보여줍니다. 벡터가 길수록 눈송이의 속도는 더 커집니다. 벡터의 시작점과 끝점의 좌표가 미터로 표시되는 한, 벡터의 길이를 계산하면 단위당 미터로 측정되는 눈송이의 속도를 얻을 수 있습니다. 시간.

참고: 벡터를 보는 방법에는 두 가지가 있습니다. 바운드 벡터는 공간에 있는 고정점의 순서쌍인 반면, 자유 벡터는 절대 위치를 공개하지 않고 A 지점에서 B 지점으로의 좌표 변위만 알려줍니다. 예를 들어 다음 코드 조각을 고려해보세요.

A = [1, 2, 3] B = [3, 2, 1]

bound_vector = [A, B] bound_vector [[1, 2, 3], [3, 2, 1]]

free_vector = [b - a for a, b in zip(A, B)] free_vector [2, 0, -2] 바운드 벡터는 두 점을 모두 둘러싸서 꽤 많은 정보를 제공합니다. 대조적으로 자유 벡터는 A에서 B로의 이동만을 나타냅니다. 최종 지점 B에서 초기 지점 A를 빼서 자유 벡터를 계산할 수 있습니다. 그렇게 하는 한 가지 방법은 연속된 좌표 쌍을 반복하는 것입니다. 목록 이해

자유 벡터는 본질적으로 좌표계의 원점으로 변환된 경계 벡터이므로 0에서 시작합니다.

벡터의 길이(크기라고도 함)는 시작점과 끝점 𝐴 및 𝐵 사이의 거리입니다. 유클리드 표준을 사용하여 계산할 수 있습니다.



Python에서 절대값 함수 구현
def absolute_value(x):
    if x >= 0:
        return x
    else:
        return -x

def absolute_value(x):
    return x if x >= 0 else -x

참고: 또는 가장 큰 인수를 반환하는 Python의 내장 max() 함수를 사용하여 이를 더욱 간결하게 작성할 수 있습니다.

def absolute_value(x):
return max(x, -x)

숫자 𝑥가 음수이면 이 함수는 양수 값을 반환합니다. 그렇지 않으면 𝑥 자체를 반환합니다.

from math import sqrt

def absolute_value(x):
    return sqrt(pow(x, 2))

숫자와 함께 내장된 abs() 기능 사용
정수 및 부동 소수점 숫자
abs(-12)

12
abs(-12.0)

12.0
복소수
z = complex(3, 2)

두 개의 인수를 허용합니다. 첫 번째 부분은 실수 부분을 나타내고 두 번째 부분은 허수 부분을 나타냅니다.

z.real

3.0
z.imag

2.0
abs(z)

3.605551275463989


분수와 소수
from fractions import Fraction

abs(Fraction("1/3"))

Fraction(1, 3)
abs(Fraction("-3/4"))

Fraction(3, 4)
금융 분야에서 일하고 있다면 Decimal 객체를 사용하여 부동 소수점 표현 오류를 완화하는 데 도움이 될 것입니다.

from decimal import Decimal

abs(Decimal("0.3333333333333333"))

Decimal('0.3333333333333333')
abs(Decimal("-0.75"))

Decimal('0.75')
다른 Python 객체에 대한 abs() 호출
일정 기간 동안의 일일 평균 기온 판독값의 절대값을 계산한다고 가정해 보겠습니다. 안타깝게도 해당 숫자가 포함된 Python 목록에서 abs()을 호출하자마자 오류가 발생합니다.

temperature_readings = [1, -5, 1, -4, -1, -8, 0, -7, 3, -5, 2]
abs(temperature_readings)

TypeError: bad operand type for abs(): 'list'
TypeError Traceback (most recent call last) Cell In[14], line 2 1 temperature_readings = [1, -5, 1, -4, -1, -8, 0, -7, 3, -5, 2] —-> 2 abs(temperature_readings)

TypeError: bad operand type for abs(): ‘list’

그 이유는 abs() 숫자 목록을 처리하는 방법을 모르기 때문입니다. 이 문제를 해결하려면 다음과 같이 목록 이해를 사용하거나 Python의 map() 함수를 호출할 수 있습니다.

[abs(x) for x in temperature_readings]

[1, 5, 1, 4, 1, 8, 0, 7, 3, 5, 2]
list(map(abs, temperature_readings))

[1, 5, 1, 4, 1, 8, 0, 7, 3, 5, 2]
NumPy 배열 및 팬더 시리즈
list(abs(temperature_readings))

[1, 5, 1, 4, 1, 8, 0, 7, 3, 5, 2]
import numpy as np
temperature_readings = np.array([1, -5, 1, -4, -1, -8, 0, -7, 3, -5, 2])
abs(temperature_readings)

array([1, 5, 1, 4, 1, 8, 0, 7, 3, 5, 2])
list(abs(temperature_readings))

[1, 5, 1, 4, 1, 8, 0, 7, 3, 5, 2]
lowest_temperatures = {
    "Reykjavik": [-3, -2, -2, 1, 4, 7, 9, 8, 6, 2, -1, -2],
    "Rovaniemi": [-16, -14, -10, -3, 3, 8, 12, 9, 5, -1, -6, -11],
    "Valetta": [9, 9, 10, 12, 15, 19, 21, 22, 20, 17, 14, 11],
}

import calendar
import pandas as pd

df = pd.DataFrame(lowest_temperatures, index=calendar.month_abbr[1:])
df

Reykjavik Rovaniemi Valetta
Jan -3 -16 9
Feb -2 -14 9
Mar -2 -10 10
Apr 1 -3 12
May 4 3 15
Jun 7 8 19
Jul 9 12 21
Aug 8 9 22
Sep 6 5 20
Oct 2 -1 17
Nov -1 -6 14
Dec -2 -11 11
df["Rovaniemi"]

Jan   -16
Feb   -14
Mar   -10
Apr    -3
May     3
Jun     8
Jul    12
Aug     9
Sep     5
Oct    -1
Nov    -6
Dec   -11
Name: Rovaniemi, dtype: int64
type(df["Rovaniemi"])

pandas.core.series.Series
abs(df)

Reykjavik Rovaniemi Valetta
Jan 3 16 9
Feb 2 14 9
Mar 2 10 10
Apr 1 3 12
May 4 3 15
Jun 7 8 19
Jul 9 12 21
Aug 8 9 22
Sep 6 5 20
Oct 2 1 17
Nov 1 6 14
Dec 2 11 11
abs(df["Rovaniemi"])

Jan    16
Feb    14
Mar    10
Apr     3
May     3
Jun     8
Jul    12
Aug     9
Sep     5
Oct     1
Nov     6
Dec    11
Name: Rovaniemi, dtype: int64
나만의 데이터 유형
import math

class Vector:
    def __init__(self, *coordinates):
        self .coordinates = coordinates

    def __abs__(self):
        origin = [0] * len(self.coordinates)
        return math.dist(origin, self.coordinates)

snowflake_velocity = Vector(0.42, 1.5, 0.87)
abs(snowflake_velocity)

1.7841804841439108
import math

class Vector:
    def __init__(self, *coordinates):
        self.coordinates = coordinates

    def __abs__(self):
        return math.hypot(*self.coordinates)

snowflake_velocity = Vector(0.42, 1.5, 0.87)
abs(snowflake_velocity)

1.7841804841439108
출처 : https://realpython.com/python-absolute-value/