본문 바로가기

데이터 사이언스/데이터 분석

[NIPA AI 교육/기본] Numpy 기초

앞서 작성했던 2021 AI 교육을 들으면서 들은 내용을 짧게나마 정리하려고 한다.

 

Numpy란?

대규모 다차원 배열을 다룰 수 있게 도와주는 python 라이브러리로, 파이썬 리스트에 비해 빠른 연산을 지원하고 메모리를 효율적으로 사용할 수 있게 도와줌.(반복문 없이 배열 처리 가능)

 


Numpy 사용하기

import numpy as np

* numpy 라이브러리는 np라는 별칭으로 많이 사용됨

 

Numpy 배열 생성하기

import numpy as np

np_arr = np.array(ragne(5))
print(np_arr)   # [0 1 2 3 4] -> 공백 구분
print(type(np_arr))   # <class 'numpy.ndarray'>

np_arr2 = np.array([0, 1, 2, 3, 4], dtype=float)
print(np_arr2)   # [0. 1. 2. 3. 4.]
print(np_arr2.dtype)   # 'float64'
print(np_arr2.astype(int))   # [0 1 2 3 4]

ndarray = n차원의 배열(n-dimensional array)

파이썬 리스트와는 달리 같은 데이터 타입만 저장 가능하며, 쉼표(,)로 구분되는 파이썬 리스트와는 달리 공백으로 구분됨

 


ndarray의 차원 속성 - ndim & shape

# 1차원 배열
list1 = [0, 1, 2, 3]
arr1 = np.array(list1)
print(arr1.ndim)   # 1
print(arr1.shape)   # (4,)

# 2차원 배열
list2 = [[0, 1, 2], [3, 4, 5]]
arr2 = np.array(list2)
print(arr2.ndim)   # 2
print(arr2.shape)   # (2, 3)

indexing & slicing

* indexing : 인덱스로 값을 찾아냄

x = np.arrange(7)
print(x)  # [0 1 2 3 4 5 6]
print(x[3])   # 3

x[0] = 10
print(x)   # [10 1 2 3 4 5 6]

* slicing : 인덱스의 값으로 배열의 일부분을 가져옴

x = np.arrange(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]

* Boolean indexing : 배열의 각 요소의 선택 여부를 True와 False로 구성된 mask array, 즉 boolean mask를 이용해 지정하는 방식

x = np.arrange(7)

print(x)   # [0 1 2 3 4 5 6]
print(x < 3) [True True True False False False False]

* Fancy indexing : 배열의 각 요소 선택을 index 배열을 전달하여 지정하는 방식

matrix = np.arrange(7)
print(matrix[[1]]))