[Python.NumPy] ones_like, zeros_like, empty_like 함수 - Creation Function II

2020. 12. 5. 05:00Python과 머신러닝/NumPy 데이터 분석

0. 요약

  • 그렇기 때문에 이 포스트에서는 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를 전달할 수 있어서 편리하다.
  • 이러한 함수를 사용하여 원하는 크기의 배열을 생성할 수 있고, 이런 것들이 어떻게 머신 러닝에서 사용되는지 계속 알아보자.

 

반응형