¿Forma pitónica para reemplazar los valores de la lista con límite superior e inferior (sujeción, recorte, umbral)?

Quiero reemplazar a los outliners de una lista. Por lo tanto, defino un límite superior e inferior. Ahora cada valor arribaupper_bound Y debajolower_bound se reemplaza con el valor enlazado. Mi enfoque era hacer esto en dos pasos usando una matriz numpy.

Ahora me pregunto si es posible hacer esto en un solo paso, ya que supongo que podría mejorar el rendimiento y la legibilidad.

¿Hay una forma más corta de hacer esto?

import numpy as np

lowerBound, upperBound = 3, 7

arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

arr[arr > upperBound] = upperBound
arr[arr < lowerBound] = lowerBound

# [3 3 3 3 4 5 6 7 7 7]
print(arr)

Respuestas a la pregunta(2)

Su respuesta a la pregunta