Существует несколько более эффективный способ, чем урезание реальной и мнимой частей в отдельные массивы с использованием операций на месте:
np.clip(x.real, clip_min, clip_max, out=x.real)
np.clip(x.imag, clip_min, clip_max, out=x.imag)
Если это просто декартовы координаты, хранящиеся в комплексных числах, вы можете обрезать они в одной команде, сохраняя их как плавающие, а не сложные.
x = array([[-1.4, 5. ],
[-4.7, -3. ]])
np.clip(x, clip_min, clip_max)
>>> array([[-1.4, 3. ],
[-4. , -3. ]])