logo

Python의 numpy.where()

NumPy 모듈은 조건에 따라 요소를 선택하기 위한 numpy.where() 함수를 제공합니다. 조건에 따라 a 또는 b 중에서 선택한 요소를 반환합니다.

예를 들어, 모든 인수 -> 조건, a & b가 numpy.where()에 전달되면 조건에 의해 생성된 bool 배열의 값에 따라 a & b에서 선택된 요소를 반환합니다.

조건만 제공된 경우 이 함수는 np.asarray(조건).nonzero() 함수의 약어입니다. 0이 아닌 값을 직접 선호해야 하지만 서브클래스에서는 올바르게 작동합니다.

통사론:

 numpy.where(condition[, x, y]) 

매개변수:

numpy.where() 함수의 다음 매개변수는 다음과 같습니다.

자바의 지도

조건: array_like, bool

이 매개변수가 True로 설정되면 x를 생성하고 그렇지 않으면 y를 생성합니다.

x, y: array_like:

자바 람다 표현식

이 매개변수는 선택할 값을 정의합니다. x, y 및 조건은 어떤 형태로든 브로드캐스팅 가능해야 합니다.

보고:

이 함수는 조건이 True인 x의 요소와 다른 곳의 y의 요소가 포함된 배열을 반환합니다.

예시 1: np.where()

 import numpy as np a=np.arange(12) b=np.where(a<6,a,5*a) b < pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created an array &apos;a&apos; using np.arange() function.</li> <li>We have declared the variable &apos;b&apos; and assigned the returned value of np.where() function.</li> <li>We have passed the array &apos;a&apos; in the function.</li> <li>Lastly, we tried to print the value of b.</li> </ul> <p>In the output, the values ranging from 0 to 5 remain the same as per the condition, and the other values have been multiplied with 5.</p> <p> <strong>Output:</strong> </p> <pre> array([ 0, 1, 2, 3, 4, 5, 30, 35, 40, 45, 50, 55]) </pre> <h3>Example 2: For multidimensional array</h3> <pre> import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b </pre> <p> <strong>Output:</strong> </p> <pre> array([[1, 8], [3, 4]]) </pre> <h3>Example 3: Broadcasting x, y, and condition</h3> <pre> import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x &gt; y, x, 10 + y) a </pre> <p> <strong>Output:</strong> </p> <pre> array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]]) </pre> <p> <strong>In the above code</strong> </p> <ul> <li>We have imported numpy with alias name np.</li> <li>We have created an array &apos;a&apos; using np.arange() function. </li> <li>We declared the variable &apos;b&apos; and assigned the returned value of np.where() function.</li> <li>We have passed a multidimensional array of boolean as a condition and x and y as an integer arrays.</li> <li>Lastly, we tried to print the value of b.</li> </ul> <p>In the output, the x value has been compared to y value if it satisfied the condition, then it will be printed x value otherwise, it will print y value, which has passed as an argument in the where() function.</p> <h3>Example 4: Broadcasting specific value</h3> <pre> x=np.array([[0,1,2],[0,2,5],[0,4,8]]) y=np.where(x<4,x,-2) y < pre> <p> <strong>Output:</strong> </p> <pre> array([[ 0, 1, 2], [ 0, 2, -2], [ 0, -2, -2]]) </pre> <hr></4,x,-2)></pre></6,a,5*a)>

예 2: 다차원 배열의 경우

 import numpy as np a=np.arange(12) b=np.where([[True, False], [True, True]],[[1, 2], [3, 4]],[[9, 8], [7, 6]]) b 

산출:

 array([[1, 8], [3, 4]]) 

예시 3: x, y 및 조건 브로드캐스팅

 import numpy as np x, y = np.ogrid[:3, :4] a=np.where(x &gt; y, x, 10 + y) a 

산출:

 array([[10, 11, 12, 13], [ 1, 11, 12, 13], [ 2, 2, 12, 13]]) 

위의 코드에서

  • 별칭 이름이 np인 numpy를 가져왔습니다.
  • np.arange() 함수를 사용하여 'a' 배열을 만들었습니다.
  • 변수 'b'를 선언하고 np.where() 함수의 반환값을 할당했습니다.
  • 조건으로 부울의 다차원 배열을 전달하고 정수 배열로 x와 y를 전달했습니다.
  • 마지막으로 b의 값을 출력해 보았습니다.

출력에서 조건을 만족하면 x 값이 y 값과 비교되고, 그렇지 않으면 x 값이 인쇄되며, where() 함수에 인수로 전달된 y 값이 인쇄됩니다.

예시 4: 특정 값 방송

 x=np.array([[0,1,2],[0,2,5],[0,4,8]]) y=np.where(x<4,x,-2) y < pre> <p> <strong>Output:</strong> </p> <pre> array([[ 0, 1, 2], [ 0, 2, -2], [ 0, -2, -2]]) </pre> <hr></4,x,-2)>