2019. 11. 10. 23:37ㆍPython
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 |