numpy.select를 사용하여 값을 배열에 조건부로 할당하려고합니다. 그러나 선택의 사용은 DIV/0 오류가 발생할 수 있습니다 아니라 단지 관련 과제보다는 모든 가능한 과제, 예를 들어 계산이 필요합니다numpy.select를 사용하여 div/0 오류를 방지하십시오.
import numpy as np
def testfunc(z):
conditionlist = [z < 0, z == 0, z > 0]
choicelist = [1/z, 0, 1 + z]
return np.select(conditionlist, choicelist)
if __name__ == "__main__":
print testfunc(np.array([0]))
이 코드는 DIV/0 오류와 함께 실패합니다
, 1/Z 있지만, 여기서 z = 0은 반환 된 배열에 실제로 할당 될 필요가 없습니다.
div/0 오류없이 조건부로 numpy 배열에 값을 할당 할 수 있습니까? 루프가 유일한 옵션입니까?
깔끔한 트릭. 이 접근법이나 루프가 더 효율적인지 알기 위해 어떤 일이 있습니까? 루프는 사용되지 않은 많은 계산을 피할 것입니다 ... – elhefe
@elhefe : 저는 (게으르다) 확신 할 수 있도록 측정해야하지만, 내 직감은 루프가 ** 많이 느려질 것이라는 것입니다. –