티스토리 뷰

반응형

numpy에서 많이 사용하는 where, argmax, argmin에 대해 정리해보겠습니다.

아래 코드들은 jupyter를 활용하여 순서대로 실행해보세요.

 

 

1. numpy array 값 비교 

 

numpy는 배열요소 그대로 비교 작업이 가능합니다.

import numpy as np;

a = np.arange(10)
a
a > 5 

-- 출력 --
array([False, False, False, False, False, False,  True,  True,  True, True])

배열과 숫자를 비교하면 각각의 요소와 비교한 결과가 Array 형태로 출력됩니다.

sum(a>5)

-- 출력 --
4

그래서 비교한 값을 sum으로 계산하면 True가 몇 개인지 확인할 수 있습니다.

any

any는 array 요소들 중에 조건에 만족하는 요소가 하나라도 있다면 True를 리턴합니다.

np.any(a>5), np.any(a<0)

-- 출력 --
(True, False)

all

all은 모든 요소가 만족한다면 True를 리턴 합니다.

np.all(a>5), np.any(a<5)

-- 출력 --
(False, True)

배열끼리 비교

numpy는 배열의 크기가 동일하면 동일 위치에 있는 요소 간의 비교 결과를 Boolean type으로 반환합니다.

a = np.array([1,3,0], float)
b = np.array([5,2,1], float)
a > b

-- 출력 --
(False, True)
a == b

-- 출력 --
array([False, False, False])
(a > b).any(),  (a > b).all()

-- 출력 --
(True, False)

logical

if 문과 비슷하며 각 요소들을 조건에 비교하여 배열로 리턴합니다.

 

logical_and : 모두 만족하는가
logical_not : Not을 붙여 주어 반대로 표시
logical_or  : 하나라도 만족하는가

np.logical_and(a>0, a<3)

-- 출력 --
array([ True, False, False])
np.logical_not(a)

-- 출력 --
array([False, False,  True])
np.logical_or(a>0, a<3)

-- 출력 --
array([ True,  True,  True])

 

2. numpy where

 

where(Condition, TRUE 일 때 출력할 값, FALSE 일때 출력할 값)

 

where은 if문과 비슷하며 배열의 각 요소를 Condition과 비교하여 지정한 값으로 리턴합니다.

np.where( a> 0, 3, 2) 

-- 출력 --
array([3, 3, 2])

condition만 지정한다면 해당 값이 있는 index 값을 출력합니다.

a = np.arange(5, 15)
np.where(a>10) # 주소값을 가져온다 (index값)

-- 출력 --
(array([6, 7, 8, 9], dtype=int64),)

 

3. argmax & argmin

 

argmx, argmin은 사용빈도가 높은 함수이며 꼭 기억해두는 것이 좋습니다.

 

array 요소들 중 최대값 또는 최소값의 index를 반환하는 함수입니다.

axis 기반의 반환도 가능합니다.

a = np.array([1,2,4,5,8,78,23,3])
np.argmax(a), np.argmin(b)

-- 출력 --
(5, 2)

 

a = np.array([[1,2,4,7], [9, 88,6,45], [9,76,3,4]])
np.argmax(a, axis=1), np.argmin(a, axis=0)

-- 출력 --
(array([3, 1, 1], dtype=int64), array([0, 0, 2, 2], dtype=int64))

 

 

참고

https://www.youtube.com/watch?v=R47dC04H2-I&list=PLBHVuYlKEkULZLnKLzRq1CnNBOBlBTkqp&index=8

반응형
댓글