하루에 하나씩 공부하기
파이썬 데이터 사이언스 핸드북 - Numpy 본문
- 넘파이재배열
newaxis 이용한 행, 열 벡터
x = np.array([1, 2, 3])
row_vector = x[np.newaxis, :] # 행 벡터
print(row_vector)
print(row_vector.shape) # 출력: (1, 3)
[[1 2 3]]
(1, 3)
x = np.array([1, 2, 3])
column_vector = x[:, np.newaxis] # 열 벡터
print(column_vector)
print(column_vector.shape) # 출력: (3, 1)
[[1]
[2]
[3]]
(3, 1)
np.vstack([x,y]) : 배열 수직으로 쌓음
np.hstack([x,y]) : 배열 수평으로 쌓음
np.vsplit : 수직 분할
np.hsplit : 수평 분할
- 넘파이 산술 연산자
np.add
np.subtract
np.negative
np.multiply
np.divide : 나눗셈 (/)
np.floor_divide : 바닥나눗셈(//)
np.power : 지수 (**)
np.mod : 나머지 (%)
np.abs : 절댓값
더 많은 정보는 gamma function python 검색
- 고급 Ufunc 기능
출력지정
import numpy as np
y = np.zeros(10) # 길이가 10인 0으로 초기화된 배열 생성
x = np.array([0, 1, 2, 3, 4]) # 지수 값 배열
np.power(2, x, out=y[::2]) # 2^x 계산 결과를 y의 짝수 인덱스에 저장
print(y)
[ 1. 0. 2. 0. 4. 0. 8. 0. 16. 0.]
- 집계
np.add.reduce() : 배열의 모든 요소의 합 반환
np.multiply.reduce() : 배열의 모든 요소 곱 반환
np.add.accumulate() : 계산의 중간결과 저장
np.multiply.outer() : 모든 쌍에 대한 출력값 출력
- 기타 집계함수
np.argmin / np.argmax : 최소최댓값의 인덱스 찾기
np.percentile : 요소의 순위 기반 백분위 수 계산
np.any : 요소 중 참이 있는지 검사
np.all : 모든 요소가 참인지 검사
- 브로드캐스팅
다른 크기의 배열에 함수 적용하는 규칙의 집합
1. 두 배열의 차원 수가 다르면 더 작은 수의 차원을 가진 배열 형상의 앞쪽(왼)을 1로 채움
2. 어떤 차원에서도 일치하지 않는다면 해당 차원의 형상이 1인 배열이 다른 형상과 일치하도록 늘어남
3. 임의의 차원에서 크기가 일치하지 않고 1도 아니라면 오류 발생
- 부울 배열
요소 수 세기 - True 요소 값 셈
1, np.count_nonzero
2. np.sum
# 각 행에 6보다 자은 값이 몇개 ?
np.sum(x<6, axis=1)
array([4,2,2])
- Numpy 정렬
np.sort
np.argsort : 정렬 후 인덱스 값 출력
np.sort(X,axis=0) : 각 열 정렬
np.sort(X,axis=1) : 각 행 정렬
- 부분정렬
np.partition(x,k) : x 배열의 k개의 가장 작은 값 왼쪽, 오른쪽에는 임의 순서
- 구조화된 배열 만들기
#딕셔너리 형태
np.dtype({'names':('name,'age','weight'),
'formats':('U10','i4','f8')})
# 튜플 형태
np.dtype([('name','S10'),('age','i4'),('weight','f8')])
b | 바이트 |
i | 부호 있는 정수 |
u | 부호 없는 정수 |
f | 부동 소수점 |
C | 복소수 부동 소수점 |
S,a | 문자열 |
U | 유니코드 문자열 |
V | 원시 데이터 |