지난 포스트에서는 Numpy에 대해 기본적인 내용들을 살펴보았다. 이번 포스트에서는 Numpy 배열을 생성하는 방법들에 대해 알아보려고 한다.
Basic creation
import numpy as np
a = np.array([1, 2, 3, 4])
print(a)
print(a.dtype)
print(a.shape)
>>
[1 2 3 4]
int64
(4,)
기본적인 배열 생성 방법은 np.array 메소드에 인자로 배열의 요소로 들어갈 시퀀스를 전달하는 방법이다.
b = np.array([(1.5, 2, 3), (4, 5, 6)])
print(b)
print(b.dtype)
print(b.shape)
>>
[[1.5 2. 3. ]
[4. 5. 6. ]]
float64
(2, 3)
다차원 배열을 생성할 때는 시퀀스를 변형하면 된다. 또한, Numpy 배열은 원소들의 데이터 타입이 통일되기 때문에 실수형 원소인 1.5가 대입되면 나머지 정수들도 실수 취급된다.
c = np.array([[1, 2], [3, 4]], dtype=complex)
print(c)
print(c.dtype)
print(c.shape)
>>
[[1.+0.j 2.+0.j]
[3.+0.j 4.+0.j]]
complex128
(2, 2)
물론 데이터 타입을 직접 명시하여 배열을 생성할 수도 있다.
np.zeros
np.zeros((3, 4), dtype=np.int16)
>>
[[0 0 0 0]
[0 0 0 0]
[0 0 0 0]]
원소들을 0으로 채우는 방법이다. 첫 번째 인자에 생성할 배열의 차원을 전달하면 된다.
np.ones
np.ones((2, 3, 4), dtype=np.int16)
>>
[[[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.empty
np.empty((3, 4))
>>
[[2. 2. 4.70372193 2.73861279]
[2. 2. 2.23606798 2.23606798]
[2. 2. 4.70372193 2.73861279]]
초기화 되지 않은 메모리 상태에 기반하여 원소들을 랜덤한 값으로 채운다. 기본 데이터 타입은 float64 이다.
np.arange
np.arange(10, 30, 5)
>>
[10 15 20 25]
np.arange 메소드는 세 가지를 인자로 받는다. 첫 번째 인자는 start, 두 번째 인자는 stop, 세 번째 인자는 step이다. start 부터 stop까지 step 단위로 원소들을 갖는 배열을 생성한다. (stop은 제외한 원소)
np.linspace
np.linspace(10, 30, 5)
>>
[10. 15. 20. 25. 30.]
np.linspace 또한 세 가지의 인자를 받는다. 단, 세 번째로 받는 인자는 step이 아닌 num이다. start 부터 step까지 일정한 간격으로 num 개수 만큼의 원소를 배열의 원소로 갖는다. (stop을 포함)
np.xxxx_like
a = np.arange(0, 20, 2).reshape((2, 5))
print(a)
print(np.ones_like(a))
print(np.zeros_like(a))
print(np.empty_like(a))
>>
# shape : (2, 5)
[[ 0 2 4 6 8]
[10 12 14 16 18]]
# ones_like
[[1 1 1 1 1]
[1 1 1 1 1]]
# zeros_like
[[0 0 0 0 0]
[0 0 0 0 0]]
# empty_like
[[0 0 0 0 0]
[0 0 0 0 0]]
특정 배열과 같은 차원으로 새로운 배열을 생성한다. 그러나 xxxx에 들어가는 키워드에 따라 다른 원소들이 할당된다.
.
.
.
다음 포스트에서는 원소를 랜덤으로 할당해주는 np.random 패키지의 rand, randint, randn 메소드에 대해 알아보겠다.
참고
https://numpy.org/devdocs/user/quickstart.html
https://firework-ham.tistory.com/33
'[Library] - Numpy > Quick Start' 카테고리의 다른 글
# 5. Universal functions (0) | 2022.02.25 |
---|---|
# 4. Basic Operations (0) | 2022.02.19 |
# 3. Printing Arrays (0) | 2022.02.19 |
# 0. Numpy 기초 (0) | 2022.01.07 |
댓글