반응형

안녕하세요, 왕초보 코린이를 위한 코딩유치원에 오신 것을 환영합니다.

 

 

오늘은 파이썬 데이터 분석하면 바로 떠오르는 패키지 중 하나인 Numpy에 대해서 알아보겠습니다.

 

numpy란?

 

Numpy는 선형대수, 수치해석, 통계 관련한 파이썬 패키지로, 어려운 프로그래밍 언어인 C, C++, Fortran에 비해 아주 쉽게 고성능의 수치 연산을 가능하게 해주는 패키지 입니다. Numerical Python의 줄임말로 '넘파이'라고 부르며, pandas와 matplotlib 같은 다른 데이터분석용 패키지의 기반이 되기도 합니다.

 

통상적으로 데이터분석은 VScode IDE 보다는 Jupyter Notebook을 사용하므로 만약 주피터 노트북에 대해 모르신다면 아래의 글을 읽고 나신 후에 이 글을 읽으시는 것을 추천드립니다.

 

2021.04.13 - [파이썬 패키지/데이터분석] - [파이썬 데이터 분석] 2편. 데이터 분석을 위한 준비 (Jupyter Notebook 설치 및 사용법)

2021.04.16 - [파이썬 패키지/데이터분석] - [파이썬 데이터 분석] 5편. Jupyter Notebook으로 데이터 파일 불러오기 (꿀팁. Tap과 Tap+Shift 사용법은 꼭 알아두세요!!)

 

 

numpy 설치

 

 만약 Anaconda를 설치하신 분들은 numpy가 이미 설치되어 있으며, 순정 파이썬(파이썬 공식 홈페이지에서 다운로드)를 받으신 분들은 아래의 코드를 터미널창에 입력해주세요.

pip install numpy

 

numpy 불러오기

#numpy 패키지를 np라는 이름으로 불러오기
import numpy as np

 

numpy 배열 (ndarray)

numpy의 가장 기본적인 구조로 1D array(벡터), 2D array(행렬), 3D array(텐서)와 같은 데이터 구조를 가집니다.

참고로 ndarray라는 말은 n dimension array의 줄임말입니다.

 

출처. https://velog.io/@mingki

 

여기서 알아두셔야 할 개념이 있는데 바로 axis와 shape입니다.

 

axis shape
기준이 되는 축으로 축의 갯수는 차원과 같음


(axis 0) = 1D array
(axis0, axis 1) = 2D array
(axis0, axis1, axis 2) = 3D array

배열의 차원과 크기 정보



(3, ) = 3의 배열
(4,3) = 4x3의 배열
(2,5,3) = 2x5x3의 배열

 

위에서 배운 개념들을 실제 numpy에서 어떻게 코드로 사용하는지 알아보겠습니다.

 

1차원 배열 (1D array)

 

가장 기본적인 배열인 1차원 배열입니다. 흔히 수학적으로 벡터라고 부릅니다. 따로 dtype를 설정해줄 수 있습니다.

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


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

 

2차원 배열 (2D array)

 

가장 많이 사용되는 2차원 배열입니다. 우리가 흔히 아는 행렬(Matrix)입니다.

np.array([1,2,3],[4,5,6],[7,8,9])

 

shape 확인

 

shape 함수로 해당 배열의 shape를 확인 할 수 있습니다.

my_list = [1,2,3,4]
my_list2 = [[1,2,3],[4,5,6]]   # 2행 3열

arr1 = np.array(my_list)
arr2 = np.array(my_list2)

arr1.shape
>>> (4, )

arr2.shape
>>> (2,3)   #(행,열)

 

넘파이 배열과 리스트와의 차이점

 

파이썬에서 주로 사용하는 array인 리스트와 numpy의 array인 ndarray를 비교하면서 ndarray의 특징을 알아보겠습니다.

 

1. 데이터 타입을 출력해보면 list와 numpy.ndarray로 다른 타입을 가집니다.

my_list = [1,2,3,4]

type(my_list)
>>> list

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

type(my_ndarray)
>>> numpy.ndarray

 

2. 리스트와 다르게 array에서는 data 타입이 단일이어야 합니다.

 

# 리스트는 각자 다른 자료형을 함께 저장 가능
my_list = [1,0.5,'python']

# ndarray는 한가지로 통일된 자료형으로 저장
my_ndarray = np.array([1,0.5,'python'])

>>> array(['1', '0.5', 'python'], dtype='<U6')    #모든 자료형이 문자열 타입으로 바뀜

 

위에서와 같이 np.array를 만들 때 따로 dtype을 지정하지 않은 경우엔 아래와 같은 규칙을 따릅니다.

 

1) 정수(int)와 실수(float)가 섞여 있는 경우 

    - 모두 실수로 바뀜

np.array([1,0.5,3])

>>> array([1. , 0.5, 3. ])

 

2) 정수, 실수, 문자열이 섞여 있는 경우

    - 모두 문자열로 바뀜 (이전 코드 참조)

 

 

즉, 별도로 dtype을 지정하지 않은 경우 아래의 우선순위를 따릅니다. (str > float > int)

 

 

만약 dtype을 별도로 지정했다면 아래와 같은 규칙을 따릅니다.

 

1) float을 int 지정했을 때는 내림 처리

np.array([1,0.9,3], dtype=int)

>>> array([1, 0, 3])

 

2) str을 int나 float으로 지정했을 경우, 에러 발생

np.array([1,0.5,'python',3], dtype=int)

>>>
ValueError: invalid literal for int() with base 10: 'python'

 

단, str이 다른 숫자와 같은 자료형태를 갖고 있으면 에러 없이 지정 dtype으로 변경

np.array([1,'2',3], dtype=int)

>>> array([1, 2, 3])

 

오늘 준비한 내용은 여기까지입니다.


<참고자료>

 

패스트캠퍼스_직장인을 위한 파이썬 데이터분석 올인원 패키지 Online.

 

반응형

+ Recent posts