[Python.NumPy] arange/zeros/empty 함수의 차이 - Creation Function I
2020. 12. 4. 05:00ㆍPython과 머신러닝/NumPy 데이터 분석
0. 요약
- Creation Function이란 배열 생성을 쉽게 도와주는 함수들을 의미한다.
- 대표적으로 arange/zeros/empty 함수가 있는데, 각각이 어떻게 동작하는지 코드를 통해 알아보자.
In [1]:import numpy as np
In [2]:np.arange(0, 5, 0.5) # 0이상 5미만까지 0.5씩 증가하는 값의 array를 만들어라
Out[2]:array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
In [3]:np.arange(30) # 0이상 30미만까지 1씩 증가하는 값의 array를 만들어라
Out[3]:array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])
In [4]:np.arange(30).reshape(5,6) #array를 np matrix로 변형하여 사용할 수 있다.
Out[4]:array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29]])
In [5]:np.zeros(shape=(10,), # (10,) tuple 형태로 크기 지정
dtype=np.int8) # 0으로 만들어줌
Out[5]:array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int8)
In [6]:np.empty(shape=(10,), # (10,) tuple 형태로 크기 전달
dtype=np.int8) # dtype 지정
Out[6]:array([ 32, -44, -103, -36, -97, 1, 0, 0, 0, 0], dtype=int8)
1. Creation Function이란?
- 생성 함수 : 말 그대로 무언가를 만드는 함수들을 통칭하는 용어이다.
- NumPy는 array를 쉽게 만들기 위한 함수들을 제공하고 있다.
- 오늘 배워볼 함수들은 arange, zeros, empty이다.
2. arange 함수
In [1]:import numpy as np
In [2]:np.arange(0, 5, 0.5) # 0이상 5미만까지 0.5씩 증가하는 값의 array를 만들어라
Out[2]:array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
In [3]:np.arange(30) # 0이상 30미만까지 1씩 증가하는 값의 array를 만들어라
Out[3]:array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29])
In [4]:np.arange(30).reshape(5,6) #array를 np matrix로 변형하여 사용할 수 있다.
Out[4]:array([[ 0, 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10, 11],
[12, 13, 14, 15, 16, 17],
[18, 19, 20, 21, 22, 23],
[24, 25, 26, 27, 28, 29]])
- arange는 3개의 Parameter를 입력받는다 : Start, End, Interval.
- Start 이상, End 미만의 값을 Interval 간격으로 생성하여 하나의 배열에 담아주는 함수이다.
- Parameter를 2개만 전달할 경우 Start와 End로 인식하여 동작한다 (Interval의 Default 값은 1이다).
- Parameter를 1개만 전달할 경우 End로 인식하여 동작한다 (Start의 Default 값은 0이다).
- 이렇게 arange를 통해 만들어진 배열을 .reshape 함수를 통해서 원하는 형태로 변형하여 사용할 수도 있다.
3. zeros 함수
In [5]:np.zeros(shape=(10,), # (10,) tuple 형태로 크기 지정
dtype=np.int8) # 0으로 만들어줌
Out[5]:array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int8)
- zeros 함수는 shape와 dtype을 전달받아서 동작하는 함수이다.
- shape를 통해서 크기를 지정해주고, dtype으로 data type을 지정해준다.
- 그러면 shape와 dtype에 해당하는 0으로 채워진 배열을 반환해주는 함수이다.
4. empty 함수
In [6]:np.empty(shape=(10,), # (10,) tuple 형태로 크기 전달
dtype=np.int8) # dtype 지정
Out[6]:array([ 32, -44, -103, -36, -97, 1, 0, 0, 0, 0], dtype=int8)
- zeros 함수와 동일한 parameter를 입력받는 함수이다.
- 많이들 zeros와 헷갈리는 함수인데, zeros와 empty의 차이는 초기화 여부이다.
- zeros는 메모리를 할당받아 0으로 초기화한 뒤에 반환하지만,
empty는 메모리 할당만 받고 초기화 없이 반환한다. - 그렇기 때문에 empty 함수를 실행할 때마다 값이 다른 것을 확인할 수 있다.
- 이는 해당 메모리 영역에 어떤 데이터가 남아있었던지 상관없이 그대로 영역의 주소만 알려줄 뿐, 초기화는 사용자에게 맡기기 때문이다.
- empty의 장점은 초기화를 생략하기 때문에 성능이 조금 더 개선된다는 점인데, 실무에서는 거의 사용되는 적이 없다.
5. 마무리
- arange 함수 : start/end/interval을 입력받아서 배열을 만들어준다.
- arange 함수 뒤에 .reshape을 사용해서 크기를 조절하여 사용하는 경우가 많다.
- zeros 함수 : shape과 dtype을 입력받아 0으로 초기화된 배열을 만들어준다.
- empty 함수 : shape과 dtype을 입력 받아 초기화되지 않은 배열을 만들어준다.
'Python과 머신러닝 > NumPy 데이터 분석' 카테고리의 다른 글
[Python.NumPy] Identity 행렬, eye, diag 함수 이해하기 - Creation Function III (0) | 2020.12.06 |
---|---|
[Python.NumPy] ones_like, zeros_like, empty_like 함수 - Creation Function II (0) | 2020.12.05 |
[Python.NumPy] ndarray indexing과 slicing (0) | 2020.11.30 |
[Python.NumPy] ndarray.reshape - 크기 변환하기 (0) | 2020.11.30 |
[Python.NumPy] ndarray 이해하기 (0) | 2020.11.30 |