코딩(coding)/파이썬 기초 개념

[4] array 생성하기. np.arange() / np.zeros() / np.ones() / np.empty() - numpy 넘파이 array 활용 (Danuri coding/다누리 코딩)

다누리_Danuri JUN 2022. 8. 3. 12:57

 

앞서 벡터와 매트릭스 등 array에 대해서 살펴보았다면,

이번에는 array를 생성해보는 방법들을 살펴보도록 하겠습니다.

 

 

1. arange() - 범위를 지정하여 생성하기 

np.arange(10) #int 로 0부터 9까지 배열 추출한다.
### array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])

np.arange(0, 10, 0.5) #넘파이의 경우에는 floating point 도 표시할 수 있다.
### array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. ,6.5, 7. , 7.5, 8. , 8.5, 9. , 9.5])

#이전에 배운 것 응용해보겠습니다!
np.arange(10).reshape(2,5)
"""
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
"""

arange() 함수는 기존에 range() 함수와 유사하게 작동됩니다.

 

np.arange() 에서, 

안에 10을 넣게 되면, 0부터 9까지의 배열을 생성됩니다.

 

그리고,

np.arange(0, 10, 0.5) 같이 설정해줄 경우에는 - 각각 start, end, step 으로 인식됩니다.

그래서 0부터 10 미만까지 0.5 간격으로 배열이 생성됩니다.

 

이전에 배웠던 개념들을 여기서 적용시키면,

np.arange()로 배열을 생성하고, reshape()를 통해서 형태를 변환시켜 줄 수 있습니다.

 

 

2. zeros() - 0으로  ndarray 생성하기

 

0으로 채워진 ndarray를 생성하고 싶을 경우에는,

다음과 같이 np.zeros()를 활용합니다.

#1. 앞에 array 생성하는 방식과 유사하게 생성한다.
np.zeros(shape=(10,), dtype=np.int8) #shape 형태의 zero ndarray 를 생성한다.
### array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0], dtype=int8)

#2. 매트릭스 형태로 생성한다.
np.zeros((3,5))
"""
array([[0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0.]])
"""

np.zeros() 함수는

#1처럼 shape, dtype을 설정하여 배열을 생성할 수 있고,

#2처럼 매트릭스 형태, 즉 행렬을 설정하여 생성할 수 있습니다. 

 

 

3. ones() - 1로  ndarray 생성하기

 

1로 이루어진 ndarray의 경우에는 앞선 np.zeros()의 방식과 동일하게 진행됩니다.

#1. 앞에 array 생성하는 방식과 유사하게 생성한다.
np.ones(shape=(10,), dtype=np.int8) #shape 형태의 ones ndarray 를 생성한다.
### array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=int8)

#2. 매트릭스 형태로 생성한다.
np.ones((3,5))
"""
array([[1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.],
       [1., 1., 1., 1., 1.]])
"""

 

4. empty() - 비어있는 ndarray 생성하기

 

empty()의 경우에는 memory initialization 이 되지 않기 때문에 비어있는 ndarray가 생성됩니다.

또한 값이 지정되어 있지 않기 때문에 랜덤으로 값이 계속해서 바뀌게 됩니다.

 

#1. 앞에 array 생성하는 방식과 유사하게 생성한다.
np.empty(shape=(10,), dtype=np.int8) #shape 형태의 empty ndarray 를 생성한다. - 값이 계속 바뀌게 된다.
### array([  16,  111,   62,    1,    0,    0,    0,    0,   96, -112], dtype=int8)

#2. 매트릭스 형태로 생성한다.
np.empty((3,5))
"""
array([[1.03233001e-316, 1.06099790e-312, 1.01855798e-312,
        9.54898106e-313, 1.08221785e-312],
       [1.01855798e-312, 1.23075756e-312, 1.10343781e-312,
        1.12465777e-312, 9.76118064e-313],
       [1.08221785e-312, 1.01855798e-312, 1.14587773e-312,
        4.44659081e-322, 0.00000000e+000]])
"""

앞서서 배운 내용들을 활용하여 기존 매트릭스를 변환할 수도 있습니다.

 

기존 매트릭스를 0, 1 또는 empty로 바꾸고 싶을 때는,

다음과 같이 진행합니다.

t_matrix = np.arange(20).reshape(5,-1)
np.zeros_like(t_matrix)
"""
array([[0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0],
       [0, 0, 0, 0]])
"""

np.ones_like(t_matrix)
"""
array([[1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1],
       [1, 1, 1, 1]])
"""

np.empty_like(t_matrix)
"""
array([[           21087808,                 115,                   0,
                          0],
       [                  0, 4189017755886035579, 3419490394216495904,
        2322206415472651376],
       [6568633515958755618, 3184080310709005360, 3467820298285101088,
        2318280822927401004],
       [7214815381798530096, 8389758868253604212, 7863883274792347960,
        2477389231675241573],
       [7287422522494754874, 7957695015493526904, 4189038621173441375,
                    8204832]])
"""

 

오늘 다뤄본 내용들을 토대로, 매트릭스를 자신이 원하는 형태로 생성하면 좋을 것 같습니다!