>  기사  >  백엔드 개발  >  np.where() 코드 애플리케이션의 Python 상세 분석

np.where() 코드 애플리케이션의 Python 상세 분석

WBOY
WBOY앞으로
2022-08-24 09:11:302332검색

【관련 추천: Python3 동영상 튜토리얼

np.where에는 두 가지 사용법이 있습니다:

첫 번째np.where(condition, x, y), 즉 조건은 조건이 충족되면 출력은 x이고, 조건이 충족되지 않으면 출력은 y 입니다. 코드로 직접 이동하세요:

a = np.arange(10)
//array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
print(np.where(a > 5, 1, -1))
//array([-1, -1, -1, -1, -1, -1,  1,  1,  1,  1])

위 내용은 이해하기 쉽지만, 공식 홈페이지의 예는 아래와 같이 이해하기 쉽지 않습니다:

np.where([[True,False], [True,True]],   
			 [[1,2], [3,4]],
             [[9,8], [7,6]])
// 输出 array([[1, 8], [3, 4]])

할 수 있습니다. 첫 번째 줄의 bool 값은 값을 취하는지 여부를 나타내는 조건을 나타냅니다. 즉, 먼저 [True, False]를 보면, 즉 첫 번째 True 값은 첫 번째 행이 1을 취한다는 의미입니다. 값의 첫 번째 행의 [1, 2], 아래의 9를 취하는 대신 False는 첫 번째 행 [1, 2]를 취하지 않고 두 번째 행 [9, 8]에서 8을 취함을 의미합니다. [3, 4]와 동일합니다.
이해의 편의를 위해 또 다른 예를 들어 보겠습니다. 첫 번째 행에서

a = 10
>>> np.where([[a > 5,a < 5], [a == 10,a == 7]],
             [["chosen","not chosen"], ["chosen","not chosen"]],
             [["not chosen","chosen"], ["not chosen","chosen"]])

//array([[&#39;chosen&#39;, &#39;chosen&#39;], [&#39;chosen&#39;, &#39;chosen&#39;]], dtype=&#39;<U10&#39;)

a>5True 를 사용하고 첫 번째 행의 첫 번째 값을 취하고, a<5는 두 번째 값을 사용합니다. 두 번째 행, 아래에도 동일하게 적용됩니다.

첫 번째 방법을 이해한 후 np.where의 두 번째 방법을 살펴보겠습니다.

즉, np.where(condition), x 및 조건(condition)만 있습니다. y를 입력한 다음 조건(즉, 0이 아님)을 충족하는 요소의 좌표를 출력합니다(numpy.nonzero와 동일). 여기서 좌표는 튜플 형식으로 제공됩니다. 일반적으로 출력 튜플에는 조건을 충족하는 요소의 각 차원 좌표에 해당하는 여러 배열이 포함됩니다.

>>> a = np.array([2,4,6,8,10])
>>> np.where(a > 5)			
//(array([2, 3, 4]),)   返回索引值
>>> a[np.where(a > 5)]  			
//array([ 6,  8, 10]) 返回元素值,即a[索引]

제가 본 코드 예를 들어주세요.

a = array([[0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [1., 0.],
  	       [0., 1.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.],
  	       [1., 0.],
  	       [0., 1.]])
np.where(a == 1)
//(array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
//        17, 18, 19], dtype=int64),
// array([1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1],
//       dtype=int64))

반환된 두 개의 배열 구성 요소는 어떤 행과 어떤 값이 1인지 나타냅니다. 따라서 결과의 첫 번째 배열 배열은 행 인덱스를 나타내고, 두 개의 배열 배열은 브로큰 실버 인덱스 1인 열 인덱스입니다.

첨부: np.where() 다중 조건 사용법

1.np.where(condition,x,y) where에 3개의 매개변수가 있는 경우, 첫 번째 하나 매개변수는 조건을 나타냅니다. 조건이 true인 경우 where 메소드는 x를 반환합니다. 조건이 true가 아닌 경우 where는 y

2.np.where(condition)를 반환합니다. where에 매개변수가 하나만 있는 경우 해당 매개변수는 조건이 true인 경우 조건에 맞는 각 요소의 좌표를 반환하고 튜플 형식으로 반환합니다.

3. 조건이 여러 개인 경우 &는 or를 의미합니다. 예를 들어, a = np.where((0x, y는 a와 동일한 크기를 유지해야 합니다. R 예: re

import numpy as np

data = np.array([[0, 2, 0],
                           [3, 1, 2],
                           [0, 4, 0]])
new_data = np.where((data>= 0) & (data<=2), np.ones_like(data), np.zeros_like(data))
print(new_data)

결과:

[[1 1 1]

[0 1 1]
[1 0 1]]



이를 통해 데이터의 각 요소가 데이터 & gt; data<=2, 만족하면 np.ones_like(data)

해당 좌표
값을 반환하고, 만족하지 않으면 np.zeros_like(data)

해당 좌표 값을 반환합니다. . 물론, x와 y는 조건과 동일한 차원을 갖는 한 다른 값으로 변경될 수 있습니다. 【관련 추천: Python3 비디오 튜토리얼

위 내용은 np.where() 코드 애플리케이션의 Python 상세 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 jb51.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제