티스토리 뷰

Code/Python

2. 넘파이(numpy) 기초 사용법

행복한 꿈나무 2021. 6. 17. 14:39
반응형

Numpy를 사용하는 방법에 대해서 설명을 드릴겁니다.
만약 Macbook인데, Anaconda가 설치가 안되어 있다면 1편을 참고 해주세요.

Anaconda가 아닌 Numpy만 설치를 원하시면 아래 명령어로 설치해 주시면 됩니다.

pip install numpy

Anaconda가 설치가 되어 있다면, 저와 같은 방법으로 진행하시면 됩니다.
먼저 Anaconda-Navigator을 실행을 합니다.
Environments에서 설치가 되어있는 라이브러리들을 확인이 가능하며, python경우 3.8.8로 설치가 되어있습니다.

이외에도 numpy, pandas 모두 설치가 되어있습니다.
많이 사용하는 Jupyter Notobook을 Launch를 하여 테스트를 해보겠습니다. 먼저 Jupiter Notebook을 Launch를 합니다.

실행이 되면서 아래 그림과 같이 접속이 됩니다. (http://localhost:8888/tree)

Machine Learning 폴더를 생성 후 이동을 합니다.

이후 New 에서 Python3을 클릭을 합니다.

해당 창을 통해서 대화형 형식으로 numpy 테스트를 진행을 합니다.

1. numpy

Python에서 선형대수 기반의 프로그램을 쉽게 만들 수 있도록 지원하는 대표적인 패키지 입니다. 루프를 사용하지 않고 대량 데이터의 배열 연산을 가능하게 하고, 빠른 배열 연산 속도를 보장을합니다.
빠른 연산이 가능하여 대량의 데이터 기반의 시나리오에 적합하여 pandas와 함께 머신러인에 매우 중요한 패키지입니다.
아래 명령어를 입력하여 모듈을 Import 합니다.

import numpy as np

2. numpy ndarray 란?

넘파이의 데이터 타입은 ndarray입니다. ndarray를 이용해서 다차원 배열을 쉽게 생성하고 다양한 연산을 수행 합니다.

ndarray로 변환 방법

array() → ndarray 로 변환을 합니다. 생성된 ndarray 배열은 동일한 타입의 값을 가집니다. ndarray 배열의 shape 변수는 ndarray의 행과 열의 수를 튜플 형태로 가지고 있으므로, 어떤 배열로 구성이 되었는지 확인할 수 있습니다.

아래 예제에서 보다 자세히 설명을 드리겠습니다.
list는 4개의 값을 갖는 리스트입니다. 이 list를 array() 함수에 넣어 numpy 배열을 생성을 하면, 1차원 배열와 같이 (4,)로 표시가 됩니다. 이것은 1차원 배열로 4개의 값을 가지고 있음을 뜻합니다.
두번째 2차원 배열의 경우 array2.shape의 형태는 (2,3)으로 2개의 행과 3개의 열이 구성되어 2*3 총 6개의 데이터가 있다는 의미 입니다.
그럼 세번째 2차원 배열은 무슨 의미 일까요?
array3.shape을 보면 (1,3) 입니다. 이 의미는 1개의 행과 3개의 열로 구성이 되어 있다는 의미 입니다.
array1과 array3은 데이터는 리스트 1개로 구성은 되어 있으나, 명확하게는 서로 다른 차원의 배열로 구성이 되어 있다고 보시면 됩니다.

이 차이를 이해하는것이 numpy에서는 매우 중요합니다.
한가지 주의할 점은 array() 안에 하나의 리스트만 들어가므로 리스트의 리스트를 넣어야 합니다.
만약 배열의 차원이 이해가 되지 않으면, ndarray.ndim을 이용해서 확인이 가능합니다.

3. ndarray의 데이터 타입

ndarray에 기입이 가능한 데이터 타입은 숫자, 문자열, 불 값 등 모두 가능합니다. ndarray는 dtype 형으로 저장이 되며 일반적으로 숫자형의 경우 int형(8bit, 16bit 32bit), unsigned int형(8bit, 16bit,32bit), float형(16bit, 32bit,64bit, 128bit)이 있습니다. 이 보다 더 큰 숫자 값이나 정밀도를 위해 complex 타입도 제공을 합니다.

ndarray내의 데이터 타입은 같은 데이터 타입만 저장이되며, 한개의 ndarray 배열에 int와 float가 같이 있을 수 없습니다. ndarray내의 데이터 타입은 dtype을 사용하여 확인이 가능합니다.

자세한 내용은 아래 예제에서 설명을 드리겠습니다.

리스트인 int_list 에는 숫자인(int) 1,2,3의 값을 가지고 있습니다. 이를 ndarray로 변경을 하게 되면, ndarray에서는 변경된 값은 모두 int64형의 데이터 타입인것을 dtype을 통해서 확인이 가능합니다.

그럼 다른 데이터 타입의 값을 가지고 있는 리스트를 ndarray로 변경을 하였을 경우, 어떻게 되는지 확인해 보겠습니다.

int와 string이 같이있는 리스트는 int형의 값 1,2 가 모두 문자열 값인 '1', '2'로 변환이 되었습니다. 그리고 데이터 타입이 더 큰 타입으로 변경이 되어 유니코드 값으로 변경이 되었습니다.

int와 float이 같이있는 리스트는 int형의 값 1,2 가 모두 float 값인 '1.', '2.'으로 변환 되었습니다.

ndarray의 데이터값의 타입 변경도 numpy는 제공을 하고 있으며, 대부분 타입을 변경을 하는 이유는 메모리를 절약을 하기 위해서 사용을 합니다. int로 처리가 가능 값의 경우 float의 값을 변경을 하여 메모리를 절약을 합니다.

데이터 타입 변경은 astype() method를 이용해서 변경을 할 수 있습니다. 아래 예제를 통해서 사용하는 방법을 확인 해보겠습니다.
먼저 int형 ndarray를 생성 후, astype을 이용해서 float64로 변환하고, float64에서 int32로 변환을 하였습니다.
이후 float형 ndarray를 새로 생성 후, float64에서 int32로 변경합니다. float형으로 ndarray 변환 시 가지고 있었던, 소수점아래의 값들은 int32로 변환을 하면서 당연히 모두 없어집니다.

이번 2편에서는 numpy를 설치하거나, Anaconda를 이용하여 테스트를 하는방법과 ndarray에 대한 개념과 변환방법 그리고 데이터 타입에 대해서 설명을 드렸습니다.

3편에선 ndarray의 데이터를 다루는 방법에 대해서 설명할 예정이며, 특정 값 추출, 슬라이싱, 인덱싱에 대해서 설명 드리겠습니다.

반응형

'Code > Python' 카테고리의 다른 글

4. 넘파이(numpy) 기초 사용법  (0) 2021.07.02
3. 넘파이(numpy) ndarray 다루기  (0) 2021.06.24
1. Numpy를 위한 Anaconda설치 in Mac  (0) 2021.06.17
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday