Pythoni abs() funktsioon: absoluutväärtuse arvutamine koos näidetega

1. Pythoni abs() funktsiooni põhikasutus

Mis on abs() funktsioon Pythonis?

Pythoni abs() funktsioon on sisseehitatud funktsioon, mis tagastab antud arvu absoluutväärtuse. Absoluutväärtus tähendab arvu suurust, jättes tähelepanuta märgi (pluss või miinus). abs() on väga lihtne kasutada ning töötab täisarvude, ujukomaarvude ja isegi kompleksarvude puhul.

Põhiline kasutamine

abs() funktsiooni kasutamine on intuitiivne – anna lihtsalt arv argumendiks ning saad selle absoluutväärtuse. Näited:

# Täisarvu näide
x = -10
y = abs(x)
print(y)  # Väljund: 10

# Ujukomaarvu näide
a = -3.14
b = abs(a)
print(b)  # Väljund: 3.14

# Kompleksarvu näide
z = 3 + 4j
w = abs(z)
print(w)  # Väljund: 5.0

Nagu näha, võimaldab abs() funktsioon hõlpsalt arvude absoluutväärtusi arvutada. Eriti kasulik on see kompleksarvude puhul, kus väärtus leitakse Pythagorase teoreemi põhjal, mis on laialt kasutatav matemaatilistes arvutustes.

2. Erinevus math.fabs() funktsiooniga

Mis on math.fabs()?

Pythoni standardteegi math moodulis on olemas fabs() funktsioon, mis sarnaselt abs() funktsioonile tagastab arvu absoluutväärtuse. See võtab argumendiks reaalarvu (täisarv või ujukomaarv) ning tagastab tulemuse alati ujukomaarvuna.

Erinevused abs() ja math.fabs() vahel

Oluline erinevus abs() ja math.fabs() vahel seisneb tagastatavas andmetüübis. abs() tagastab täisarvu täisarvuna ja ujukomaarvu ujukomaarvuna, samas kui math.fabs() tagastab alati ujukomaarvu.

import math

# abs() ja math.fabs() võrdlus
x = -10
print(abs(x))       # Väljund: 10 (täisarv)
print(math.fabs(x)) # Väljund: 10.0 (ujukomaarv)

y = -3.14
print(abs(y))       # Väljund: 3.14 (ujukomaarv)
print(math.fabs(y)) # Väljund: 3.14 (ujukomaarv)

math.fabs() on sobiv juhul, kui on vaja tagada, et tulemused oleksid alati ujukomaarvud – näiteks arvutustes, kus andmetüübi järjepidevus on oluline.

RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. Massiivide ja loendite absoluutväärtuse arvutamine

abs() funktsiooni piirangud ja NumPy kasutamine

abs() ja math.fabs() funktsioonid töötavad üksikute arvudega. Kui on vaja arvutada absoluutväärtus tervele loendile või massiivile, ei saa neid otse kasutada. Selle asemel on soovitatav kasutada NumPy teeki, mis võimaldab elementide kaupa arvutamist.

NumPy abs() funktsioon

NumPy teegis on olemas np.abs() funktsioon, mis arvutab loendi või massiivi kõikide elementide absoluutväärtused.

import numpy as np

# Massiivi absoluutväärtused
arr = np.array([-1, -2, -3, 4])
abs_arr = np.abs(arr)
print(abs_arr)  # Väljund: [1 2 3 4]

NumPy toetab ka kompleksarvudega massiive ning suudab arvutada nende absoluutväärtused.

# Kompleksarvude massiiv
d = np.array([3 + 4j, 1 - 1j])
abs_d = np.abs(d)
print(abs_d)  # Väljund: [5.         1.41421356]

pandas teegiga arvutamine

Kui töötled andmeraame, saab kasutada DataFrame.abs() meetodit konkreetsete veergude absoluutväärtuste leidmiseks.

import pandas as pd

# DataFrame absoluutväärtused
df = pd.DataFrame({'A': [-1, -2, -3], 'B': [4, -5, 6]})
print(df.abs())
# Väljund:
#    A  B
# 0  1  4
# 1  2  5
# 2  3  6

NumPy ja pandas muudavad suurte andmehulkade töötlemise palju efektiivsemaks.

4. Praktilised näited

Näide 1: Veaandmete absoluutväärtus

Andmeanalüüsis kasutatakse tihti absoluutväärtust vigade suuruse hindamiseks.

# Vigade absoluutväärtus
errors = [1.5, -2.3, 0.9, -1.2, 0.4]
abs_errors = [abs(err) for err in errors]

# Keskmine absoluutne viga
average_abs_error = sum(abs_errors) / len(abs_errors)
print(average_abs_error)  # Väljund: 1.26

Näide 2: Kompleksarvude kasutamine

Kompleksarvude absoluutväärtust kasutatakse laialdaselt füüsikas ja inseneriteadustes.

# Kompleksarvu absoluutväärtus
z = 3 + 4j
z_abs = abs(z)
print(z_abs)  # Väljund: 5.0

Näide 3: Andmeanalüüs

Absoluutväärtust saab kasutada andmete puhastamiseks ja anomaaliate leidmiseks.

import pandas as pd

data = {'Mõõdetud': [-5, 3, -2, 8, -7], 'Prognoos': [5, 3, 2, 8, 7]}
df = pd.DataFrame(data)
df['Vahe_abs'] = (df['Mõõdetud'] - df['Prognoos']).abs()
print(df)
# Väljund:
#    Mõõdetud  Prognoos  Vahe_abs
# 0       -5        5       10
# 1        3        3        0
# 2       -2        2        4
# 3        8        8        0
# 4       -7        7       14

5. Täiendavad märkused ja head tavad

Vea käsitlemine absoluutväärtuse arvutamisel

abs() töötab arvudega, kuid kui sellele anda näiteks loend või sõnastik, tekib viga. Seetõttu on soovitatav lisada erindite käsitlemine.

# Turvaline absoluutväärtuse funktsioon
def safe_abs(value):
    try:
        return abs(value)
    except TypeError:
        print(f"TypeError: {value} ei ole toetatud tüüp.")
        return None

print(safe_abs([-1, -2]))  # Väljund: TypeError: [-1, -2] ei ole toetatud tüüp.

Jõudluse kaalutlused

Kui töötled väga suuri andmehulkasid, siis on NumPy ja pandas parim valik jõudluse säilitamiseks.

Millal kasutada abs(), math.fabs() või numpy.abs()

  • Väiksemate arvutuste puhul kasuta abs().
  • Kui vajad alati ujukomaarvu, kasuta math.fabs().
  • Suurte massiivide või andmeraamide puhul kasuta numpy.abs() või pandas.DataFrame.abs().

6. Kokkuvõte

Selles artiklis vaatasime, kuidas kasutada Pythoni abs() funktsiooni, ning võrdlesime seda math.fabs() ja numpy.abs() funktsioonidega. Absoluutväärtuste arvutamine on andmetöötluses, analüüsis ja vigade hindamisel väga oluline. Õige funktsiooni valimine aitab kirjutada tõhusamat ja töökindlamat koodi.