Notice
Recent Posts
Recent Comments
Link
01-04 19:27
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

AI 전문가가 되고싶은 사람

파이썬 프로그래밍 ( Numpy ) 복습 본문

기자단 활동

파이썬 프로그래밍 ( Numpy ) 복습

Kimseungwoo0407 2024. 2. 23. 19:53

Numpy 배열 

 

axis : 배열의 각 축, 2차원일 경우 (axis 0 : 행, axis 1 : 열)

rank : 축의 개수 ( 위 그림에서는 2 )

shape : 축의 길이, 배열의 크기 (3, 4)

 

n차원 배열 만들기

 

1차원

list = [1,2,3,4,5]

배열로 변환 함수 ( np.array )

arr = np.array(list)  -> [1,2,3,4,5]

 

2차원

list = [[1,3,5],

         [4,2,1]]

 

arr = np.array(list) -> [[1,3,5]

                                   [4,2,1]]

 

배열 차원 확인 ( ndim )

ex) arr.ndim

 

형태 확인 ( shape )

배열에 포함된 요소가 사라지지 않는 형태면 변환 가능

 

ex) (18,1) -> (3,6) -> (2,9) but (1,9) 요소 개수가 변했으므로 변환 안됨

 

shape(m,-1) 또는 shape(-1, n) 사용 시 행 또는 열 크기 한쪽만 지정해 주면 알아서 변환해 줌

 

요소 자료형 확인 ( dtype )

ex) arr.dtype

 

인덱싱 

배열[행, 열] 

배열[[행 1, 행 2,...],:] 또는 배열[[행 1, 행 2,..]]

배열[:, [열 1, 열 2,...]]

배열[[행 1, 행 2,...], [열 1, 열 2,...]]

 

3 * 3의 2차원 배열

a = np.array([[1,3,5],

                      [2,4,6],

                      [4,8,12]])

 

a [0,1] -> 3

 

a[[0,1]] -> [1 3 5]

                [2 4 6]

 

a [:, [0,1]] -> [[1 3]

                    [2 4]

                    [4 8]]

슬라이싱

마지막 범위 값은 대상에 포함되지 않는 것을 유의

a = np.array([[1,3,5],

                      [2,4,6],

                      [4,8,12]])

 

a [0:2] -> [[1 3 5]

               [2,4,6]]

 

a [1:,1:] -> [[4 6]

                [8 12]]

 

조건 조회

조건에 맞는 요소를 선택하는 방식으로 불리안 방식이라고 함

score = np.array([[1,4,6,3,8,10]])

 

score >=5 -> array([[False, False, True, False, True, True]])

 

score [score>=5] -> [6,8,10]

 

여러 조건을 &(and)와 |(or)로 연결하여 조회할 수 있음

print(score[(score>=5) & (score % 2 == 0)]) -> [6 8 10]

 

배열 연산

배열 사이의 더하기, 빼기, 곱하기, 나누기, 행렬 곱, 행렬 합 등의 연산이 가능

x = np.array([[2,4], [6,8]])

y = np.array([[10,12], [14,16]])

 

더하기

print(x+y) -> [[12,16]

                     [20,24]]

 

빼기

print(x-y) -> [[-8 -8]

                    [-8 -8]]

 

곱하기

print(x*y) -> [[20 48]

                    [84 128]]

 

나누기

print(x/y) -> [[0.2 0.333333]

                    [0.4285 0.5]]

 

배열 y 제곱

print(x ** y) -> [[           1024           1677216]

                       [ 1054752768                      0]]

 

배열 집계

 

np.sum() 혹은 array.sum()

* axis = 0 : 열 기준 집계

* axis = 1 : 행 기준 집계

* 생략 시 전체 집계

 

a = np.array([[1,5,7], [2,3,8]])

[[1 5 7]

 [2 3 8]

 

전체 집계 : 26

print(np.sum(a))

 

열 기준 집계 : [ 3 8 15 ]

print(np.sum(a, axis=0))

 

행 기준 집계 : [13 13]

print(np.sum(a, axis=1))

 

자주 사용되는 함수들

1. np.argmax(), np.argmin()

 

전체 중에서 가장 큰 값의 인덱스 : 5

print(np.argmax(a))

 

행 방향 최댓값의 인덱스 : [1 0 1]

print(np.argmax(a, axis=0))

 

열 방향 최댓값의 인덱스 : [2 2]

print(np.argmax(a, axis=1))

 

2. np.where(조건문, True일 때 값, False일 때 값)

a = np.array([1,2,3,4])

 

np.where(a <3,1,0) -> array([1,1,0,0])