머신러닝/파이썬 머신러닝 완벽 가이드

Chapter 1.3 넘파이

yooni825 2024. 4. 10. 21:41

넘파이(NumPy)란?

: 파이썬에서 선형대수 기반의 프로그램을 쉽게 만들 수 있도록 지원하는 대표적인 패키지 

- 빠른 배열 연산

- 다양한 데이터 핸들링 기능 제공 

 

넘파이 ndarray 개요

넘파이 기반 데이터 타입 - ndarray

-> 이를 이용해서 넘파이에서 다차원(Multi-dimension) 배열을 쉽게 생성 가능 

 

array() 함수 

- 파이썬의 리스트와 같은 다양한 인자를 입력받아서 ndarray로 변환하는 기능 수행 

ndarray.shape : ndarray의 차원과 크기를 튜플(tuple) 형태로 반환해줌

import numpy as np

array1 = np.array([1,2,3])
print('array1 type:', type(array1))
print('array1 array 형태: ', array1.shape)

array2 = np.array([[1,2,3],
                  [2,3,4]])
print('array2 type:', type(array2))
print('array2 array 형태: ', array2.shape)

array3 = np.array([[1,2,3]])
print('array3 type:', type(array3))
print('array3 array 형태: ', array3.shape)

[Output] 

array1 type: <class 'numpy.ndarray'>
array1 array 형태:  (3,) 	//1차원 array로 3개의 데이터를 가지고 있음
array2 type: <class 'numpy.ndarray'>
array2 array 형태:  (2, 3)	//2차원 array로, 2개의 행과 3개의 열로 구성
array3 type: <class 'numpy.ndarray'>
array3 array 형태:  (1, 3)	//1개의 행과 3개의 열로 구성된 2차원 데이터를 의미

 

ndarray.ndim : 각 array의 차원을 확인하는 함수 

 

ndarray의 데이터 타입 

- ndarray내의 데이터값은 숫자, 문자열, bool 모두 가능 

- 같은 데이터 타입만 연산 가능 (ex. 한 개의 ndarray 객체에 int와 float이 존재 X)

- dtype 속성으로 확인 

- if, 다른 데이터 유형이 섞여 있는 리스트를 ndarray로 변경 시, 데이터 크기가 더 큰 데이터 타입으로 형 변환을 일괄 적용 

 

astype() 매서드

- ndarray 내 데이터값의 타입 변경

- astype() 인자에 원하는 타입을 문자열로 지정

- 메모리 절약에 유용

 

ndarray를 편리하게 생성하기 - arange, zeros, ones

- 특정 크기와 차원을 가진 ndarray를 연속값이나 0 또는 1로 초기화하여 쉽게 생성해야 하는 경우 

- 주로 테스트용으로 데이터 생성하거나 대규모의 데이터를 일괄적으로 초기화하는 경우 

 

arange() 함수

: 0부터 함수 인자 값 -1까지의 값을 순차적으로 ndarray의 데이터값으로 변환

default 함수 

: 인자 - stop 값

range와 유사하게 start 값도 부여 가능 -> 0이 아닌 다른 값부터 시작한 연속 값을 부여

 

zeros() 함수 

: 튜플 형태의 shape 값을 입력하면 모든 값을 0으로 채워줌

 

ones() gkatn 

: 튜플 형태의 shape 값을 입력하면 모든 값을 1로 채운 ndarray 반환

* dtype 미지정 시, default로 float64형의 데이터로 채움

 

ndarray의 차원과 크기를 변경하는 reshape()

reshape() 매서드는 ndarray를 특정 차원 및 크기로 변환

지정된 사이즈로 변경이 불가능하면 오류 발생 

 

'-1'을 인자로 적용하는 경우

: 원래 ndarray와 호환되는 새로운 shape로 변환 

* reshape(-1,1) : 원본 ndarray가 어떤 형태라도, 반드시 1개의 열을 가진 ndarray로 변환시킴 

 

선형대수 연산 - 행렬 내적과 전치 행렬 구하기

행렬 내적(행렬 곱)

- np.dot() 이용

- 왼쪽 행렬의 행과 오른쪽 행렬의 열 원소들을 순차적으로 곱한 뒤 그 결과를 모두 더한 값

전치 행렬

: 원 행렬에서 행과 열의 위치를 교환한 원소로 구성된 행렬

transpose() 함수 이용