티스토리 뷰

반응형

이번 포스팅은 numpy에서 array 생성 함수인 arange, ones, zeros, emtpy, _like에 대해 정리해보겠습니다.

arange

 

numpy에서 원하는 숫자 범위를 모두 포함하는 배열을 만드는 함수를 제공합니다.

arange를 사용하면 원하는 숫자 범위, 숫자 간격에 따른 array를 생성할 수 있습니다.

import numpy as np;
np.arange(30) # range : List의 range와 같은 효과, integer로 0부터 29까지 배열 추출

-- 출력 -- 
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])
np.arange(0, 5, 0.5) # floating point 도 표시가능함

-- 출력 -- 
array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5])
create_array = np.arange(30);
create_array.reshape(5,6)

-- 출력 --
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]])

zeros

zeros는 0으로 가득 찬 array를 생성합니다.

 

np.zeros(shape, dtype, order)

 

np.zeros(shape=(10,), dtype=np.int8) # 10 -zero vector 생성

-- 출력 -- 
array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int8)
np.zeros((2,5)) # 2 by 5 - zero matrix 생성

-- 출력 -- 
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

ones

ones는 zeros와 마찬가지로 1로 가득찬 array를 생성합니다.

 

np.ones(shape, dtype, order)

 

np.ones(shape=(10,), dtype=np.int8)

-- 출력 -- 
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int8)
np.ones((2,5))

-- 출력 -- 
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])

empty 

empty는 초기화되지 않은 값으로 zeros나 ones와 마찬가지로 배열을 생성해줍니다.

주의해야 할 것은 메모리도 초기화되지 않기 때문에 예상하지 못한 쓰레기 값이 들어가 있습니다.

np.empty(shape=(10,), dtype=np.int8)

-- 출력 --
array([101,   0, 100,   0, 117,   0, 108,   0, 101,   0], dtype=int8)
np.empty((3,5))

-- 출력 -- 
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])

something_like

 

_like는 지정된 array의 shape 크기만큼 지정된 값으로 채워 array를 반환합니다.

앞에서 정리한 ones, zeros, empty를 사용할 수 있습니다.

 

test_matrix = np.arange(30).reshape(5,6);
np.ones_like(test_matrix)

-- 출력 --
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]])
np.zeros_like(test_matrix)

-- 출력 --
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]])
np.empty_like(test_matrix)

-- 출력 --
array([[1611640584,        345,         71,          0,          0,
                 0],
       [         0,          0,          0,          0, 1953702523,
        1937077345],
       [1864514082,  573317739, 1667594341, 1869182069, 1868783470,
         578055797],
       [ 741488698, 1702065442, 2019909490, 1936028272, 1852795251,
        2067407475],
       [1881287805, 1869379937,  975332449,    8215899,          0,
                 0]])

empty는 메모리가 초기화되지 않고 할당되기 때문에 쓰레기 값이 있을 수 있습니다.

이 점 꼭 주의 고려하여 사용해야 합니다.

 

 

참고 

 

https://www.youtube.com/watch?v=GcP0uvZCgZM&list=PLBHVuYlKEkULZLnKLzRq1CnNBOBlBTkqp&index=5

반응형
댓글