arr = np.array([[1,2,3],[4,5,6]])
# array([[1, 2, 3],
# [4, 5, 6]])
arr + arr
# array([[ 2, 4, 6],
# [ 8, 10, 12]])
arr / arr
#array([[1., 1., 1.],
# [1., 1., 1.]])
arr = np.array([[1,2,3],[4,5,6]])
10 - arr
#array([[9, 8, 7],
# [6, 5, 4]])
arr * 3
#array([[ 3, 6, 9],
# [12, 15, 18]])
arr / 3
#array([[0.33333333, 0.66666667, 1. ],
# [1.33333333, 1.66666667, 2. ]])
arr2 = np.array([100,200,300])
arr + arr2
#array([[101, 202, 303],
# [104, 205, 306]])
lst = list(range(6))
#[0, 1, 2, 3, 4, 5]
lst[2:5] = -1 # 2~5사이의 값을 -1로 변경하려 하지만 에러가 발생한다.
# Error
arr = np.arange(8)
#array([0, 1, 2, 3, 4, 5, 6, 7])
arr1d[3:6] = -1 # numpy는 3~5구간의 값을 -1로 변경이 가능하다.
# array([ 0, 1, 2, -1, -1, -1, 6, 7])
arr.dtype
#dtype('int64')배열에 잇는 원소의 천체 갯수
# array([[1, 2, 3],
# [4, 5, 6]])
arr.size
# 6개
배열의 차원 개수
# array([[1, 2, 3],
# [4, 5, 6]])
arr.ndim
# 2차원
가장 많이 쓰는 옵션
행과 열을 튜플의 형식으로 나타낸다.
# array([[1, 2, 3],
# [4, 5, 6]])
arr.shape
# (2, 3)
원하는 범위안에 원하는 갯수만 나오도록 할 수 있다.
np.lispace(0, 1, 6)
# 0~1 까지 6개만 나오도록 반환해라.
# array([0. , 0.2, 0.4, 0.6, 0.8, 1. ])
모든 값이 0인 numpy를 만든다.
np.zeros(5)
# array([0., 0., 0., 0., 0.])
# 2차원도 가능하다.
np.zeros((3, 2))
#array([[0., 0.],
# [0., 0.],
# [0., 0.]])
모든 값이 1인 numpy를 만든다.
np.ones(5)
# array([1., 1., 1., 1., 1.])
배열의 값중 랜덤으로 원하는 수만큼 반환한다.
data = [1,2,3,4,5,6,7]
np.random.choice(data, 3)
# data에서 랜덤으로 3개를 가져와라
# array([7, 2, 4])
np.random.seed(42)이미 존재하는 배열을 내가 원하는 대로 shape을 조정할 수 있다.
arr = np.arange(12)
#array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
# (3, 4) / 3행 4열로 변환
arr.reshape(3, 4)
# 같은 결과를 보여준다.
# -1을 넣으면 나머지 수는 자동으로 찾아줌 (한개만 가능)
arr.reshape(3, -1)
#array([[ 0, 1, 2, 3],
# [ 4, 5, 6, 7],
# [ 8, 9, 10, 11]])
# .T 옵션으로 위치를 변경한다.
arr.T
#array([[ 0, 4, 8],
# [ 1, 5, 9],
# [ 2, 6, 10],
# [ 3, 7, 11]])
arr = np.array([0,2,3,4,5])
# array([0,2,3,4,5])
# 0, 1, 3 번째의 값만 들고 올 수 있다.
arr[[True,False, True,False, True]]
# array([0, 3, 5])
밑이 자연상수 e인 지수함수(e^x)로 변환해준다.
arr = np.arange(-3, 3).reshape(3, -1)
#array([[-3, -2],
# [-1, 0],
# [ 1, 2]])
np.exp(arr) # x^arr로 변환
#array([[0.04978707, 0.13533528],
# [0.36787944, 1. ],
# [2.71828183, 7.3890561 ]])
모든 행렬의 소수점을 버린다.
arr = np.arange(-3, 3).reshape(3, -1)
#array([[-3, -2],
# [-1, 0],
# [ 1, 2]])
np.floor(np.exp(arr))
#array([[0., 0.],
# [0., 1.],
# [2., 7.]])
if-else의 벡터화 버전이다.
numpy를 사용하여 배열을 빠르게 처리할 수 있으며, 다차원도 간결하게 표현이 가능하다.
xarr = np.array([100,200,300,400])
yarr = np.array([1,2,3,4])
cond = np.array([True, False, True, False])
# where(조건, 참일때, 거짓일때)
result = np.where(cond, xarr, yarr)
# array([100, 2, 300, 4])
np.where(xarr>200, max(xarr), 0)
# array([ 0, 0, 400, 400])