np.clip() în NumPy

Limitează valorile unui tablou la un interval: ce e sub minim devine minimul, ce e peste maxim devine maximul.

Sintaxă
np.clip(a, a_min, a_max)
np.clip(a, min=None, max=None)
a.clip(min=None, max=None)

Ce face np.clip()

np.clip(a, 1, 10) înlocuiește fiecare valoare mai mică decât 1 cu 1 și fiecare valoare mai mare decât 10 cu 10. Valorile din interval rămân neschimbate.

Una dintre limite poate fi None: np.clip(a, 0, None) taie doar valorile negative. Limitele pot fi și tablouri, câte o limită pentru fiecare element (prin broadcasting).

Metoda a.clip(min, max) face același lucru. Din NumPy 2.1 funcția acceptă și numele min= și max=, pe lângă a_min și a_max.

Parametri

Parametru Descriere
a Tabloul de limitat.
a_min / min Limita de jos sau None (fără limită de jos).
a_max / max Limita de sus sau None (fără limită de sus).
out Opțional. Tablou în care se scrie rezultatul (de exemplu chiar a, pentru modificare pe loc).

Ce returnează

Un tablou nou cu valorile limitate (sau out, dacă a fost dat).

Exemple

Exemplul 1: Note între 1 și 10

După un calcul cu bonus, unele note ies din intervalul permis.

import numpy as np

note = np.array([9.5, 11.0, 4.0, 10.5, 0.5])
print(np.clip(note, 1, 10))
print(note.clip(1, 10))
print(note)

Rezultat

[ 9.5 10.   4.  10.   1. ]
[ 9.5 10.   4.  10.   1. ]
[ 9.5 11.   4.  10.5  0.5]

Exemplul 2: Doar o limită și limite pe element

import numpy as np

stoc = np.array([5, -2, 0, 8, -1])
print(np.clip(stoc, 0, None))
print(np.clip(stoc, min=0))

maxime = np.array([3, 3, 3, 5, 5])
print(np.clip(stoc, 0, maxime))

Rezultat

[5 0 0 8 0]
[5 0 0 8 0]
[3 0 0 5 0]

Greșeli frecvente

  • Crezi că np.clip schimbă tabloul pe loc. Returnează un tablou nou; păstrează-l sau dă out=a.
  • Dai limitele inversate (np.clip(a, 10, 1)): nu apare eroare, dar toate valorile devin 1. Ordinea este minim, apoi maxim.
  • Folosești np.clip pentru a scoate valorile din afara intervalului. clip le înlocuiește cu limitele, nu le elimină; pentru eliminare folosește o mască: a[(a >= 1) & (a <= 10)].

Comenzi înrudite

  • Măști booleene: Selectează elementele care îndeplinesc o condiție, cu un tablou de True/False pus între paranteze pătrate.
  • Operații element cu element și ufunc-uri: Operatorii aritmetici și funcțiile matematice NumPy (ufunc-uri) se aplică pe fiecare element, fără bucle.
  • np.where(): Cu trei argumente alege valori după o condiție (dacă-altfel pe tablouri); cu un argument returnează pozițiile unde condiția e adevărată.
  • np.min() și np.max(): Găsește valoarea minimă și maximă (np.min, np.max), diferența dintre ele (np.ptp) și maximul element cu element (np.maximum).