Skip to content

NumPy: Limitare i valori di ndarray a min e max con clip()

Python

Per limitare i valori dell’array NumPy ndarray a un determinato intervallo, utilizzare il metodo np.clip() o clip() di ndarray.

Specificando i valori minimo e massimo nell’argomento, i valori fuori intervallo vengono sostituiti con tali valori.

Ciò è quando utile si desidera limitare i valori a un intervallo come 0,0 ~ 1,0 o 0 ~ 255.

In questo articolo vengono descritti i seguenti contenuti.

  • Vieni a usare np.clip()
  • Come usare il metodo clip() di ndarray

Vieni a usare np.clip()

Specificare l’array di destinazione ndarray nel primo argomento a, il valore minimo nel secondo argomento a_min e il valore massimo nel terzo argomento a_max.

import numpy as np

a = np.arange(10)
print(a)
# [0 1 2 3 4 5 6 7 8 9]

print(np.clip(a, 2, 7))
# [2 2 2 3 4 5 6 7 7 7]

Nessuno Utilizzare se si desidera specificare solo uno dei valori minimo e massimo. Non può essere omesso.

print(np.clip(a, None, 7))
# [0 1 2 3 4 5 6 7 7 7]

print(np.clip(a, 2, None))
# [2 2 2 3 4 5 6 7 8 9]

# print(np.clip(a, 2))
# TypeError: clip() missing 1 required positional argument: 'a_max'

Il ndarray ritagliato viene restituito e il ndarray originale rimane invariato.

a_clip = np.clip(a, 2, 7)
print(a_clip)
# [2 2 2 3 4 5 6 7 7 7]

print(a)
# [0 1 2 3 4 5 6 7 8 9]

Come usare il metodo clip() di ndarray

Il metodo clip() di ndarray è quasi lo stesso.

Specificare il valore minimo nel primo argomento min e il valore massimo nel secondo argomento max.

print(a.clip(2, 7))
# [2 2 2 3 4 5 6 7 7 7]

print(a.clip(None, 7))
# [0 1 2 3 4 5 6 7 7 7]

print(a.clip(2, None))
# [2 2 2 3 4 5 6 7 8 9]

A differenza di np.clip(), min e max possono essere omessi perché None è impostato come valore predefinito per min e max.

Nota che i nomi degli argomenti sono leggermente diversi da np.clip(), quindi fai attenzione quando li specifici come argomenti delle parole chiave.

print(a.clip(2))
# [2 2 2 3 4 5 6 7 8 9]

print(a.clip(min=2))
# [2 2 2 3 4 5 6 7 8 9]

print(a.clip(max=7))
# [0 1 2 3 4 5 6 7 7 7]

Come con np.clip(), viene restituito il ndarray ritagliato e il ndarray originale rimane invariato.

a_clip = a.clip(2, 7)
print(a_clip)
# [2 2 2 3 4 5 6 7 7 7]

print(a)
# [0 1 2 3 4 5 6 7 8 9]