본문 바로가기
Python/python 기초

Numpy array - 1

by winston1214 2020. 1. 6.
반응형

데이터 분석에서 많이 쓰는 모듈을 말하자면 여러가지가 있지만 pandas나 numpy가 있다. 그 중 배열로 다룰 수 있는 numpy 모듈에 대해서 알아보겠다.

numpy에 대한 간단한 설명을 하자면 다음과 같다.

 Numpy 
- 배열 형태의 데이터 사용
- 파이썬 기반 데이터 분석 환경에서 행렬 및 벡터 연산에 필요한 다양한 함수 제공
- 메모리 소모가 많은 반복문 없이 전체 데이터 배열에 빠른 연산을 처리할 수 있는 표준 수학 함수
    - 배열: 동일한 특성 및 일정한 규칙을 가지는 여러 개의 요소가 나열되어 있는 데이터 집합
- 파이썬 list 객체를 사용할 때 보다 Numpy의 ndarray 객체를 사용하면 연산 속도가 개선되어 더 많은 데이터를 더 빠르게 처리

Numpy의 배열에 대해서 간단하게 알아보자

Numpy 배열 :numpy.ndarray
- 다차원 배열(1차원,2차원,3차원)으로 입체적인 데이터 구조를 구성하고 여러개의 데이터 방향을 가진다.
- 배열 속성: shape,ndim,dtype 등
- 데이터방향: axis=0(행/높이),1(열/폭),2(채널/깊이)

사실 이런 설명만으로는 잘 모르니 직접 예시를 들어 설명하겠다.

기본적으로 numpy는 설치를 해야됨으로 import numpy를 실시해야 되고 편의상 np로 정의하겠다. 

즉 수행 전에 import numpy as np 문장을 시행하겠다.

1차원 데이터의 생성은 언뜻보면 리스트와 비슷하지만 arr1의 type을 확인해보면 <class 'numpy.ndarray'>라는 타입이 나와 list가 아닌 array가 생성됨을 알 수 있다. np.array(data) 함수를 이용해 간단하게 배열을 생성할 수 있다.

위와 같이 shape 함수로 구조len 함수로 길이 , ndim함수로 차원, size로 배열의 크기를 알 수 있다.

또한 array의 타입을 변경하기 위해선 astype 함수가 필요하다. 기존 arr1은 dtype을 알아보았을 때 int형이다. 

이를 float함수로 바꾸기 위해선 arr1.astype(float) 라는 코드를 수행시켜야 한다.

위와 같이 기존 array([1,2,3,4,5]) 가 출력값으로 나온거와 달리 array([1. ,2. ,3. ,4. ,5. ])으로 나타나면서 실수형으로 변환이 된 것을 알 수 있다. 그러나 타입을 바꾼 array를 쓰기 위해선 다시 재정의가 필요하다. 

arr1은 현재 1차원이다. 이를 2차원으로 바꾸기 위해서는 reshape함수가 필요하다. 

이 때 주의사항은 기존 배열의 요소 개수와 변환하려는 구조의 요소 개수가 일치해야한다. 이는  당연한 것으로 부족하면 에러가 발생하고 더 커지면 그 빈값을 어떻게 처리해야할 것인가를 생각해보면 된다.

위와 같이 arr2는 arr1와 달리 1,5 즉 1행 5열의 구성으로 변경됐음을 알 수 있다.

 

마지막으로 array의 정보를 알 수 있는 사용자 정의 함수 코드이다. 기존에 소개했던 함수를 모두 사용해서 간단하게 구현 해보았다.

format 함수로 출력값이 이쁘게 나올 수 있도록 하고 array의 구조, 차원, 타입, data의 구성요소를 출력해주는 함수이다. 간단하게 하나의 array를 구현하면 

위와 같이 모든 정보가 다 나온다.  다음 글에서는 numpy의 다른 함수들과 2차원 배열 등을 소개하겠다.

 

자세한 코드는 https://github.com/winston1214/baseline_ML-> star와 팔로우 눌러주시면 감사하겠습니다.

 

winston1214/baseline_ML

ML을 위한 기초 공부. Contribute to winston1214/baseline_ML development by creating an account on GitHub.

github.com

 

반응형

'Python > python 기초' 카테고리의 다른 글

Numpy array - 4  (0) 2020.01.07
Numpy array - 3  (0) 2020.01.07
Numpy array -2  (0) 2020.01.07
Formatting  (0) 2020.01.05
Jupyter NoteBook 유용한 단축키  (0) 2020.01.05

댓글