[Python.NumPy] ones_like, zeros_like, empty_like 함수 - Creation Function II
2020. 12. 5. 05:00ㆍPython과 머신러닝/NumPy 데이터 분석
0. 요약
- 지난 포스트에서는 arange/zeros/empty에 대해서 배웠고, Creation Function에 대해서 정리했다.
2020/12/04 - [Python과 머신러닝/Python 데이터 수집] - NumPy arange/zeros/empty 함수의 차이 - Creation Function I
- 그렇기 때문에 이 포스트에서는 Creation Function에 대해서는 설명하지 않고, Creation function 중 ones_like/zeros_like/empty_like에 대해서 알아보자.
In [1]:test_matrix = np.arange(30).reshape(5,-1)
Out[1]: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 [2]:np.ones_like(test_matrix, np.float32) #원본과 동일한 크기로 만들어짐
Out[2]:array([[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.]],
dtype=float32)
In [3]:np.zeros_like(test_matrix, np.int8)
Out[3]:array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]],
dtype=int8)
In [4]:np.empty_like(test_matrix, np.int32)
Out[4]:array([[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065]])
1. ones_like
In [1]:test_matrix = np.arange(30).reshape(5,-1)
Out[1]: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 [2]:np.ones_like(test_matrix, np.float32) #원본과 동일한 크기로 만들어짐
Out[2]:array([[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1.]],
dtype=float32)
- ones_like 함수는 matrix나 vector를 parameter로 전달받는다.
- 전달받은 matrix/vector와 동일한 크기의 matrix/vector를 생성하여 1로 초기화하여 반환하는 함수이다.
- dtype을 지정해주면 원하는 data type의 배열로 생성해서 반환한다.
2. zeros_like
In [3]:np.zeros_like(test_matrix, np.int8)
Out[3]:array([[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0]],
dtype=int8)
- 이름에서 유추할 수 있듯, ones_like과 완전히 동일하다.
- 유일한 차이점은 1로 초기화하지 않고 0으로 초기화한다는 점만 다르다.
3. empty_like
In [4]:np.empty_like(test_matrix, np.int32)
Out[4]:array([[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065],
[1065, 1065, 1065, 1065, 1065, 1065]])
- empty_like도 동일하다.
- 유일한 차이점은 초기화 없이 메모리 할당만 받아서 전달한다는 것이다.
4. 마무리
- ones_like, zeros_like, empty_like는 따로 shape을 지정해주지 않고, 기존 matrix/vector를 전달할 수 있어서 편리하다.
- 이러한 함수를 사용하여 원하는 크기의 배열을 생성할 수 있고, 이런 것들이 어떻게 머신 러닝에서 사용되는지 계속 알아보자.
'Python과 머신러닝 > NumPy 데이터 분석' 카테고리의 다른 글
[Python.NumPy] 정규분포, 균등분포 데이터 만들기 np.random.normal, uniform - Creation Function IV (0) | 2020.12.07 |
---|---|
[Python.NumPy] Identity 행렬, eye, diag 함수 이해하기 - Creation Function III (0) | 2020.12.06 |
[Python.NumPy] arange/zeros/empty 함수의 차이 - Creation Function I (0) | 2020.12.04 |
[Python.NumPy] ndarray indexing과 slicing (0) | 2020.11.30 |
[Python.NumPy] ndarray.reshape - 크기 변환하기 (0) | 2020.11.30 |