numpy where

2019. 11. 10. 23:37Python

numpy.where 함수는 'x if condition else y' 같은 삼항식의 벡터화된 버전이다. 

import numpy as np

xarr = np.array([1.1, 1.2, 1.3, 1.4, 1.5])
yarr = np.array([2.1, 2.2, 2.3, 2.4, 2.5])
cond = np.array([True, False, True,  True, False])

result1 = [(x if c else y) for x, y, c, in zip(xarr, yarr, cond)]

result2 = np.where(cond, xarr, yarr)

result1 과 result2 는 arry([1.1, 2.2, 1.3, 1.4, 2.5]) 로 같은 결과를 얻을 수 있다.

np.where의 두번째, 세번째 인자는 배열이 아니라 두개, 혹은 하나가 스칼라 값이어도 동작한다. 

arr = np.random.randn(4,4)

array([[ 1.11220723,  -0.61227898,  1.04374486,  -0.92070074],

          [ 0.44835232, 1.36852989,  1.0209232 ,    1.14113235],

          [-0.38474359, 1.42009289,  -2.39570021, -2.16575766],

          [-2.00253924, -0.50830512, 0.61705088, 0.97307782]])

np.where(arr>0, 2, -2)

array([[ 2, -2, 2, -2],

           [ 2, 2,  2,  2],

           [-2, 2, -2, -2],

           [-2, -2, 2, 2]])

np.where(arr>0, 2, arr)

array([[ 2. ,                   -0.61227898,  2. ,                  -0.92070074],

            [ 2. ,                  2. ,                  2. ,                  2. ],

            [-0.38474359,  2. ,                  -2.39570021,  -2.16575766],

            [-2.00253924, -0.50830512,  2. ,                  2. ]])

 

'Python' 카테고리의 다른 글

[Pytorch] Wide & Deep  (0) 2021.01.09
[Pytorch] Linear Regression in PyTorch way  (0) 2021.01.03
[Pytorch] Gradient Descent  (0) 2021.01.02
Jupyterlab Ipywidgets 설치 (Mac, Anaconda)  (0) 2019.12.01