Numpy 살펴보기(1)
Numpy 란?
Numpy 는 Numerical Python 의 약자로 Python 에서 대규모 다차원 배열 을 다룰 수 있게 도와주는 라이브러리 입니다.
대부분의 데이터가 숫자의 배열로 나타낼 수 있기 때문에, Numpy 라이브러리는 효율적인 데이터분석이 가능하도록 N차원의 배열 객체를 지원하며, Numpy가 널리쓰이고 강력하다는 말을 듣게 해주는 것은 바로 Numpy의 배열 객체인 ndarray의 힘이라고 봐도 과언이 아닙니다.
“Numpy 를 쓰지 않고, Python 의 리스트로도 데이터 처리를 할 수 있는데?”
라는 의문이 들 수도 있지만, Numpy 는 Python 의 리스트 보다 메모리를 보다 효율적으로 사용하며, 보다 빠른 연산을 지원합니다. 따라서, 데이터 분석 분야에서 R 과 더불어 가장 널리 활용되는 Python 의 필수 라이브러리이며 대용량 데이터를 처리하는데 많이 사용됩니다.
배열 만들기
numpy library에서 자주 사용하는 함수로는 아래와 같은 것들이 있습니다.
- np.array -> 배열생성
- np.zeros -> 0이 들어있는 배열 생성
- np.ones -> 1이 들어있는 배열 생성
- np.empty -> 초기화가 없는 값으로 배열을 반환
- np.arange(n) -> 배열 버전의 range 함수
- np.linspace(0, 1, 5) -> 0부터 1사이를 5개로 나눔
- np.random.random((2, 2)) -> 2X2 행열을 난수로 채움
- np.random.normal(0, 1, (2, 2)) -> 평균이 0이고, 표준편차가 1인 2X2 행열을 난수로 채움
- np.random.randint(0, 10, (2, 2)) -> 0 ~ 10 사이의 2X2 행열을 난수로 채움
Numpy 함수 예제
# 파이썬에서 리스트 만들기
list(range(10))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# numpy를 사용하기 위해 import
import numpy as np
np.array([1, 2, 3, 4, 5])
# array([1, 2, 3, 4, 5])
# 1차원 배열을 생성
array1 = np.array([0, 1, 2, 3])
print(array1)
# [0 1 2 3]
# 2차원 배열 생성
array2 = np.array([[1, 2],
[3, 4]])
print(array2)
# [[1, 2],
# [3, 4]]
배열의 데이터타입 dtype
Python 리스트와는 다르게 array 는 단일타입으로 구성이 됩니다. 아래의 예제에서 처럼 Data Type 정의를 dtype=float
로 하게되면,
배열에 들어가는 모든 수는 float 형으로 생성이 됩니다.
array = np.array([1, 2, 3, 4], dtype=float)
array # array([1., 2., 3., 4.])
array.dtype # dtype('float64')
# 형변환을 위해서 astype 함수를 사용
array.astype(int) # array([1, 2, 3, 4])
Data Type 으로 표현할 수 있는 유형의 예는 아래와 같습니다.
dtype | 설명 | 표현 유형 |
---|---|---|
int | 정수형 타입 | i, int_, int32, int64, i8 |
float | 실수형 타입 | f, float_, float32, float64, f8 |
str | 문자형 타입 | str, U, U32 |
bool | 불린 타입 | ?, bool_ |
# 2*4 배열을 소수 1.0 으로 초기화 하여 생성
array2 = np.ones((2, 4), dtype=float)
print(array2)
# [[1. 1. 1. 1.]
# [1. 1. 1. 1.]]
# 1차원 배열을 0 으로 초기화 하여 생성
array3 = np.zeros(5)
print(array3)
# [0. 0. 0. 0. 0.]
# 리스트를 생성
data = [0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1]
# 리스트를 어레이로 변환
array_data = np.array(data)
# 데이터타입 출력
print(array_data.dtype)
# int64
# 데이터 길이 출력
print(len(array_data))
# 16
# 데이터 크기 출력
print(array_data.size)
# 16
# 마스킹 연산을 활용하여 어레이 중에서 0 인 값을 세기
print(len(array_data[array_data == 0]))
# 9
# np.count_nonzero 함수를 사용하여 0 인 값 세기
print(np.count_nonzero(array_data == 0))
# 9