개요
2022.11.11 - [Python] NumPy - 배열 1
2022.11.12 - [Python] NumPy - 배열 2 (인덱싱과 슬라이싱)
에 이어 NumPy에 대해서 계속 정리한다.
자료형
NumPy의 배열(ndarray 클래스 객체) 내 원소는 모두 같은 자료형이어야 한다. array 함수로 배열 생성 시 dtype 인수를 사용하여 자료형을 명시적으로 지정할 수 있다. 전달한 매개변수가 없으면 타입을 추론하게 된다.
자료형을 지정할 때는 아래와 같은 dtype 접두사 + 바이트/글자 수를 전달하여 지정한다. 숫자는 생략할 수 있고, 생략 시에는 OS에 따라 적절한 크기로 지정된다.
dtype 접두사 | 설명 | 사용 예 |
b | 불리언 | b (참 혹은 거짓) |
i | 정수 | i8 (64비트) |
u | 부호 없는 정수 | u8 (64비트) |
f | 부동소수점 | f8 (64비트) |
c | 복소 부동소수점 | c16 (128비트) |
O | 객체 | 0 (객체에 대한 포인터) |
S | 바이트 문자열 | S24 (24 글자) |
U | 유니코드 문자열 | U24 (24 유니코드 글자) |
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='f')
만들어진 배열의 자료형은 dtype 속성으로 확인할 수 있다.
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='f')
x.dtype
실행 결과
dtype('float32')
Inf / NaN
Inf와 NaN은 NumPy에서 무한대(np.inf; infinity)와 정의할 수 없는 숫자(np.nan; not a number)를 표현할 때 사용한다.
0이 아닌 숫자를 0으로 나눈 값, 0을 0으로 나눈 값을 계산하려고 할 때 발생한다.
np.array([0, 1, -1, 0]) / np.array([1, 0, 0, 0])
실행 결과
array([ 0., inf, -inf, nan])
배열 생성
NumPy에서 자주 사용하는 단순한 배열은 함수로 생성할 수도 있다. 다차원 배열도 생성할 수 있다.
- zeros : 0으로 초기화된 배열
np.zeros(5)
# 실행 결과
array([0., 0., 0., 0., 0.])
- ones : 1로 초기화된 배열
np.ones(5)
# 실행 결과
array([1., 1., 1., 1., 1.])
- zeros_like : 0으로 초기화된 배열. 다른 배열의 크기를 참조한다.
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='f')
np.zeros_like(x)
# 실행 결과
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], dtype=float32)
- ones_like : 1로 초기화된 배열. 다른 배열의 크기를 참조한다.
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype='f')
np.ones_like(x)
# 실행 결과
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.], dtype=float32)
- empty : 특정 값으로 초기화하지 않은 배열. 배열의 크기가 커 초기화에 시간이 걸리는 경우 사용한다.
np.empty((2, 3))
# 실행 결과
array([[ 4.63939877e-308, -5.64938534e+036, -1.78409531e+046],
[-4.32950182e-035, -8.72433218e-026, -1.57234264e-063]])
- arange : 특정한 규칙에 따라 증가하는 수열 생성. 시작 값, 끝 값(미포함), 단계를 전달하면 된다.
np.arange(3, 21, 2)
# 실행 결과
array([ 3, 5, 7, 9, 11, 13, 15, 17, 19])
- linspace : 선형 구간을 지정한 지정한 구간의 수만큼 분할한다.
np.linspace(0, 100, 5)
# 실행 결과
array([ 0., 25., 50., 75., 100.])
- logspace : 로그 구간을 지정한 구간의 수만큼 분할한다.
np.logspace(0.1, 1, 10)
# 실행 결과
array([ 1.25892541, 1.58489319, 1.99526231, 2.51188643, 3.16227766,
3.98107171, 5.01187234, 6.30957344, 7.94328235, 10. ])
전치 연산
배열의 T 속성으로 행과 열이 바뀐 배열을 구할 수 있다.
A = np.array([[1, 2, 3], [4, 5, 6]])
A
A.T
실행 결과
array([[1, 2, 3],
[4, 5, 6]])
array([[1, 4],
[2, 5],
[3, 6]])
참고 문서