[4] array 생성하기. np.arange() / np.zeros() / np.ones() / np.empty() - numpy 넘파이 array 활용 (Danuri coding/다누리 코딩)
앞서 벡터와 매트릭스 등 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]])
"""
오늘 다뤄본 내용들을 토대로, 매트릭스를 자신이 원하는 형태로 생성하면 좋을 것 같습니다!
