import numpy as np # (as = alias)
# ex)
a = [1, 2, 3, 4, 5, 6]
a = np.array(a)
# array로 변환
print(a.ndim)
# 차원 확인
print(a.shape)
# 행, 열 확인
print(a.dtype)
# 타입 확인 (int, float...)
b = a.reshape(3, 2) # a = [1, 2, 3, 4, 5, 6]
# a를 3행 2열로 변환, -1 넣으면 넣은곳은 알아서 변환해줌
b[0, 1]
# 첫번째 행, 두번째 열 요소 조회 (파이썬은 인덱스가 0부터 시작)
# 요소 접근법
# 중요
b[[0, 1]]
# 1, 2행 조회 (2차원이기 때문에 앞의 2수가 행으로 들어감)
b[:, [0, 1]]
# 1, 2열 (:는 모든 행을 의미함)
b[[0, 1], [0, 1]]
# 1행 1열, 2행 2열
b[0 : 3, 1 : 3]
# 1~3행, 2~3열
b[1 :, 1 : 3]
# 2~행, 2~3열
a[a >= 5]
# a의 요소중 5 이상을 조회
a[(a >= 5) & (a < 6)]
# 5이상 6미만 조회 (조건이 여러개면 소괄호로 묶어줌, pandas도 동일함)
np.argmax(a)
# 최댓값의 인덱스를 알려줌, axis 삽입 가능
np.where(a > 3, 1, 0)
# 조건, 참값, 거짓값 // 3초과는 1로, 그 이하는 0으로 바꿔줌
np.where(a > 3, 1, a)
# 이건 3보다 크면 1로, 그 이하이면 값을 그대로 놔둠
list(range(1, 10, 2))
# 1~10 사이에서 2씩 증가하는 리스트를 만듬 --> [1, 3, 5, 7, 9]
# 또는
[2 * n + 1 for n in range(5)] # --> [1, 3, 5, 7, 9]
np.linspace(1, 10, 10)
# 1~10 사이에서 요소를 10개로 나눠 자동계산 --> 어레이 생성
# array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
np.linspace(1, 10, 4)
# array([ 1., 4., 7., 10.])
Numpy의 차원개념은 단순히 행렬이 아니다
axis가 증가할수록 하위 차원으로 엮이는 개념임
예를들어
[ [ [1, 2], [3, 4] ], [ [5, 6], [7, 8] ] ] 이런 3차원 array가 있을때
axis = 0은 [ [1, 2], [3, 4] ] --> [ [5, 6], [7, 8] ] 방향
axis = 1은 [1, 2] --> [3, 4] // [5, 6] --> [7, 8] 방향
axis = 2는 1 --> 2 // 3 --> 4... 방향```
c = [ [[1,2],[3,4]] , [[5,6],[7,8]] ]
print(np.sum(c, axis = 0))
print('--'*20)
print(np.sum(c, axis = 1))
print('--'*20)
print(np.sum(c, axis = 2))
# axis 0 = [[ 6 8] [10 12]] (1과 5, 2와 6.... 이렇게 상위 차원끼리 엮였음)
# axis 1 = [[ 4 6] [12 14]] (1과 3, 2와 4... 이렇게 바로 아래 차원끼리 엮임)
# axis 2 = [[ 3 7] [11 15]] (1과 2, 3과 4.... 가장 낮은 차원끼리 엮임)