Laske luonnollinen kirjaus pythoniin

Käyttäämath.logNumeroiden luonnollisen logaritmin (perus E) laskeminen tavanomaisessa python -koodissa ja vaihtaminennumpy.logKun haluat nopeasti, vektorisoituja toimintoja taulukkojen yli. Molemmat palauttavat oletuksena; Numpy hyväksyy lisäksi taulukon kaltaiset tulot ja monimutkaiset arvot.

Menetelmä 1 - Laske LN matematiikan moduuliin (skalaarit)

Vaihe 1:Tuo matematiikkamoduuli.

import math

Vaihe 2:Laske positiivisen luvun luonnollinen loki käyttämällämath.log(x).

x = 2.0
print(math.log(x))        # 0.6931471805599453

Vaihe 3:Anna toinen argumentti logaritmin laskemiseksi toiseen tukikohtaan tarvittaessa.

print(math.log(100, 10))   # 2.0 (log base 10 of 100)

Vaihe 4:Suojaa ei -positiivisia panoksia, jotka nostavatValueError.

Liittyvät:Gemini tuo luonnollisen äänen toiston Google -dokumenteille

def safe_ln(v: float) -> float:
    if v <= 0:
        raise ValueError("ln is undefined for non-positive values.")
    return math.log(v)

print(safe_ln(1.0))       # 0.0

Vihje: arvoille, jotka ovat hyvin lähellä nollaa,math.log1p(x)Antaa paremman tarkkuuden LN: lle (1+x).

Vaihtoehto 2 - Laske LN numpyn kanssa (skalaarit, luettelot, ndarrays)

Vaihe 1:Tuo numphy.

import numpy as np

Vaihe 2:Soveltaanp.logSkalaariin, luetteloon tai numpuun.

arr = np.array([1, 2, 3, 4], dtype=float)
print(np.log(arr))        # [0.         0.69314718 1.09861229 1.38629436]

Vaihe 3:Käsittele nolloja ja negatiivisia nimenomaisesti virheellisten tulosten välttämiseksi.

# Configure how NumPy reports floating errors (optional).
np.seterr(divide="ignore", invalid="ignore")

data = np.array([1.0, 0.0, -2.0, 3.0])
logs = np.log(data)                 # [-0.         -inf  nan  1.09861229]

# Mask out invalids for downstream use.
valid_mask = data > 0
logs_clean = np.full_like(data, np.nan)
logs_clean[valid_mask] = np.log(data[valid_mask])
print(logs_clean)                   # [0.         nan nan 1.09861229]

Vaihe 4:Laske muut emäkset tarvittaessa.

x = np.array([10, 100, 1000], dtype=float)
base = 10.0
print(np.log(x) / np.log(base))     # [1. 2. 3.]
  • Numpy vektorisoi operaation, joten suuret taulukot laskevat nopeasti.
  • Pienelle x: lle lähellä nollaa,np.log1p(x)Parantaa LN: n (1+x) numeerista tarkkuutta.

Lähestymistapa 3 - Työskentele monimutkaisten numeroiden kanssa

Vaihe 1:Tuo kompleksin Number -matemaattinen kirjasto skalaarikompleksia varten.

import cmath

Vaihe 2:Käyttääcmath.logmonimutkaisille skalateille tainp.logmonimutkaisille taulukoille.

z = 3 + 2j
print(cmath.log(z))       # (1.2824746787307684+0.5880026035475675j)

z_arr = np.array([1+1j, 2+0j, -1+0j], dtype=complex)
print(np.log(z_arr))      # Complex-valued natural logs
  • TosiarvoinenmathModuuli ei tue monimutkaisia ​​tuloja; käyttääcmathtai numphy -kompleksinen taulukko.

Siinä se - käytämath.logsuoraviivaiseksi skalaarista janp.logKun haluat vektorisoidut taulukkooperaatiot tai monimutkaiset numerot ja muista vartioida ei-positiivisia tuloja reaalinumeroissa työnkulkuissa.

Related Posts