728x90
자동 형 변환
numpy에서 수치연산 진행할 때 각각의. dtype이 다르면, 타입이 큰쪽(int < float < complex)으로 자동으로 변경된다.
# a와 b 배열 생성 & 타입 확인
a = np.ones(3, dtype=np.int32)
b = np.linspace(0, np.pi,3)
print(a)
print(b)
print(a.dtype)
print(b.dtype)
>>> [1 1 1]
>>> [0. 1.57079633 3.14159265]
>>> int32
>>> float64
a(int), b(float) 연산 시 float로 upcasting 된다.
c = a + b
print(c)
print(c.dtype)
>>> [1. 2.57079633 4.14159265]
>>> float64
집계 함수
- .sum: 모든 요소의 합
- .min: 모든 요소 중 최솟값
- .max: 모든 요소 중 최댓값
- .argmax: 모든 요소 중 최댓값의 인덱스
- .cumsum: 모든 요소의 누적 합
# a 배열 생성 & 출력
# 0부터 8미만까지 출력하고 (2,4) 크기로 재가공하고 제곱하여 출력
a = np.arange(8).reshape(2, 4)**2
print(a)
>>> [[ 0 1 4 9]
[16 25 36 49]]
# 모든 요소의 합
print(a.sum())
>>> 140
# 모든 요소 중 최대값
print(a.max())
>>> 49
# 모든 요소 중 최대값의 인덱스
print(a.argmax())
>>> 7
집계 함수 axis 값을 매개변수로 입력
축을 기준으로 연산이 가능하다.
- asix = 0 (열 기준)
- asix = 1 (행 기준)
# b 배열 생성 & 출력
b = np.arange(12).reshape(3, 4)
print(b)
>>> [[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
# axis = 0은 열 기준으로 연산
print(b.sum(axis=0))
>>> [12 15 18 21]
# axis = 1은 행 기준으로 연산
print(b.sum(axis=1))
>>> [ 6 22 38]
범용 함수
수학적인 연산은 너무 많기 때문에 .sqrt()만 예시로 들어보겠다.
더 많은 범용 함수는 https://numpy.org/doc/1.18/reference/ufuncs.html#available-ufuncs 여기서 확인 가능하다.
# B 배열 생성 & 출력
B = np.array([1, 4, 9])
print(B)
>>> [1 4 9]
# y = sqrt(x)
# sqrt는 제곱근 계산
print(np.sqrt(B))
>>> [1. 2. 3.]
'프로그래밍 언어 > Python' 카테고리의 다른 글
[pandas] loc, iloc (0) | 2024.08.04 |
---|---|
[numpy] 인덱싱과 슬라이싱, vstack, hstack, hsplit (0) | 2024.08.04 |
[numpy] arange, linspace (0) | 2024.08.04 |
파일 압축 - zlib, gzip, zipfile, tarfile (0) | 2024.08.04 |
파일 찾기, 복사, 이동 - glob, fnmatch, shutil (0) | 2024.08.04 |