np.min() și np.max() în NumPy

Găsește valoarea minimă și maximă (np.min, np.max), diferența dintre ele (np.ptp) și maximul element cu element (np.maximum).

Sintaxă
np.min(a, axis=None, keepdims=False, initial=..., where=True)
np.max(a, axis=None, keepdims=False, initial=..., where=True)
np.ptp(a, axis=None)
np.maximum(x1, x2)

Ce face np.min() și np.max()

np.min() și np.max() (sau metodele a.min(), a.max()) returnează cea mai mică și cea mai mare valoare dintr-un tablou. Cu axis=0 obții minimul/maximul fiecărei coloane, cu axis=1 al fiecărui rând. np.ptp() („peak to peak”) returnează diferența max - min.

np.maximum(x1, x2) este altceva: compară două tablouri element cu element și păstrează, pe fiecare poziție, valoarea mai mare. Merge și cu un scalar, de exemplu np.maximum(a, 0) înlocuiește valorile negative cu 0. Perechea ei este np.minimum().

Pe un tablou gol, np.max() dă ValueError, pentru că nu există maxim. Dacă tabloul poate fi gol, dă o valoare de pornire cu initial=.

Parametri

Parametru Descriere
a Tabloul.
axis Axa pe care se caută; None = tot tabloul.
initial Valoare de pornire; permite tablouri goale.
where Mască: se iau în calcul doar elementele cu True (cere și initial).
x1, x2 La np.maximum: cele două tablouri (sau tablou și scalar) comparate element cu element.

Ce returnează

np.min/np.max/np.ptp: un scalar sau un tablou pe axa rămasă. np.maximum: un tablou cu forma rezultată din broadcasting.

Exemple

Exemplul 1: Temperaturi minime și maxime pe oraș

Rândurile sunt Iași, Cluj, Constanța; coloanele sunt patru zile.

import numpy as np

temp = np.array([
    [3, 7, 5, -1],
    [1, 4, 6, 2],
    [8, 9, 7, 10],
])

print("Minim general:", temp.min())
print("Maxim pe oraș:", temp.max(axis=1))
print("Minim pe zi:", np.min(temp, axis=0))
print("Amplitudine pe oraș:", np.ptp(temp, axis=1))

Rezultat

Minim general: -1
Maxim pe oraș: [ 7  6 10]
Minim pe zi: [ 1  4  5 -1]
Amplitudine pe oraș: [8 5 3]

Exemplul 2: np.max și np.maximum

np.max reduce un tablou la o valoare; np.maximum compară două tablouri poziție cu poziție.

import numpy as np

oferta_a = np.array([120, 95, 210, 80])
oferta_b = np.array([110, 105, 190, 85])

print(np.max(oferta_a))
print(np.maximum(oferta_a, oferta_b))
print(np.minimum(oferta_a, oferta_b))

Rezultat

210
[120 105 210  85]
[110  95 190  80]

Exemplul 3: Înlocuirea valorilor negative cu 0

import numpy as np

sold = np.array([150, -20, 0, -75, 300])
print(np.maximum(sold, 0))
print(np.max(np.array([]), initial=0))

Rezultat

[150   0   0   0 300]
0.0

Greșeli frecvente

  • Scrii np.max(a, b) ca să compari două tablouri: al doilea argument este axis, nu al doilea tablou. Pentru comparație element cu element folosește np.maximum(a, b).
  • Folosești max() din Python pe un tablou 2D: compară rândurile ca întreg și dă ValueError („truth value … is ambiguous”). Folosește a.max().
  • Apelezi np.min() pe un tablou gol (de exemplu după un filtru care nu a găsit nimic) și primești ValueError. Verifică a.size sau dă initial=.

Comenzi înrudite

  • np.argmax(): Returnează poziția (indicele) valorii maxime sau minime, nu valoarea; np.unravel_index transformă indicele în rând și coloană.
  • np.sum(): Adună elementele unui tablou: pe tot tabloul, pe coloane (axis=0) sau pe rânduri (axis=1).
  • np.clip(): Limitează valorile unui tablou la un interval: ce e sub minim devine minimul, ce e peste maxim devine maximul.
  • np.nan și funcțiile nan*: Lucrul cu valori lipsă: np.nan, np.isnan și funcțiile nansum, nanmean, nanmin, nanmax care ignoră NaN.