AI/Machine Learning

파이썬 Numpy

공기반 코딩반 2022. 9. 9. 17:07
반응형

Numpy를 사용하는 이유

 --> 반복문 없이 배열 처리 가능함. 

--> 리스트에 비해 빠른 연산을 지원하고 메모리를 효율적으로 사용가능하다.

 

 

list 배열 생성

list(range(5) --> [0, 1, 2, 3, 4]  생성

타입은 list

 

numpy 배열 생성

numpy 호출: import numpy as np

np.array(range(5)) --> [0 1 2 3 4] 생성 (공백으로 구분됨)

print(type(np.array(range(5)))) --> <class 'numpy.ndarray'>생성

 

- numpy는 같은 데이터 타입만 저장 가능

arr = np.array([0, 1, 2, 3, 4], dtype=float))

print(arr) --> [0. 1. 2. 3. 4. ]

print(arr.dtype) --> 'float64'

print(arr.astype(int)) --> [0, 1, 2, 3 ,4]   # int형으로 변환

 

 

ndarray 관련 속성

list -> 넘파이 형태로

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

arr = np.array(list)

print(arr.ndim) --> 2

print(arr.shape) --> (2, 3)

 

print(arr.shape) --> (2,3)

print(arr.size) --> 6    # 배열 요소 개수

print(len(arr)) --> 6    # 배열 길이

 

Indexing

x = np.arange(7) --> [0 1 2 3 4 5 6]

print(x[3]) -- > 3

print(x[7]) --> IndexError: index 7 is out of bounds

 

x = np.arange(1, 13 ,1)

x.shape = 3, 4

print(x) -->  [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]

print(x[2, 3]) -->  12

 

Slicing

x = np.arange(7)

print(x)

# [0 1 2 3 4 5 6]

print(x[1:4]) --> [1 2 3]

print(x[1:]) --> [1 2 3 4 5 6]

print(x[:4]) --> [0 1 2 3]

print(x[::2]) --> [0 2 4 6]) # 처음부터 끝까지 2칸씩 slicing

 

x = np.arange(1, 13 ,1)

x.shape = 3, 4

print(x) # [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]

print(x[1:2,:2:3]) --> [[5]]

print(x[1:,:2]) --> [[ 5 6] [ 9 10]]

 

Boolean Indexing

x = np.arange(7)

print(x) --> [0 1 2 3 4 5 6]

print(x < 3) --> [True True True False False False False]

print(x > 7) --> [False False False False False False False]

 

print(x[x < 3])  [0 1 2]

print(x[x % 2 == 0])  [0 2 4 6]

 

Fancy Indexing

: 배열의 각 요소 선택을 Index 배열을 전달하여 지정하는 방식

x = np.arange(7)

print(x) --> [0 1 2 3 4 5 6]

print(x[[1, 3, 5]])  [1 3 5]

 

x = np.arange(1, 13 ,1).reshape(3, 4)

print(x) --> [[ 1 2 3 4] [ 5 6 7 8] [ 9 10 11 12]]

print(x[[0, 2]]) --> [[ 1 2 3 4] [ 9 10 11 12]]

 

print(x[1:2, 2]) --> [7]  # 1행~1행 2열

print(x[[0,2], 2]) --> [ 3 11] # 0행 2행의 각각 2열 값

print(x[[0,2], :2]) [[ 1 2] [ 9 10]] # 0행 2행의 각각 0열,1열 값

반응형