목록에서 아웃 라이너를 바꾸고 싶습니다. 그러므로 나는 상한과 하한을 정의한다. 이제 upper_bound
위 및 lower_bound
아래의 모든 값이 바운드 값으로 바뀝니다. 내 접근 방식은 numpy 배열을 사용하여 두 단계로이 작업을 수행했습니다.목록 값을 상한 및 하한으로 바꾸는 Pythonic 방법 (클램핑, 클리핑, 임계 값)?
이제 성능 및 가독성을 향상시킬 수 있다고 생각되면 한 단계에서 이렇게 할 수 있을지 궁금합니다.
더 짧은 방법이 있나요?
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)
컴파일 된'clip' 메소드가있는 것이 좋지만, 코드에 대해서는 아무 것도 없다. 그것은'numpy'를 완벽하게 사용하며, 경험있는 사용자에게는 읽기 쉽습니다. 그 개념을 도구 상자에 보관하십시오. 'clip' 모델에 맞지 않는 경우에 작동합니다. – hpaulj
이 작업은 일반적으로 *** 클램핑 ***, *** 클리핑 *** 또는 *** 임계 값 ***이라고합니다. – smci
'clip' 메서드를 사용해야하지만 속도보다 다른 이유가 있습니다. 당신의 코드는 우아하지만 배열이 커지면 문제가 될 수있는'arr> upperBound'를 가진 중간 배열을 생성합니다. 귀하의 코멘트에 –