일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- c++
- 혼공파
- 혼공분
- plot
- 혼공학습단
- 혼공단
- class
- 열혈c++
- 구조체
- 데이터분석
- 넘파이
- value_counts
- seaborn
- expand=true
- numpy
- 한빛미디어
- PYTHON
- LOC
- STR
- 참조자
- violinplot
- 파이썬
- 클래스
- Axis
- df.t
- 동적할당
- const
- boxplot
- 포인터
- matplotlib
- Today
- Total
yEverything
01장 수치 계산 라이브러리, 넘파이 본문
넘파이(Numpy = Numerical Python): 파이썬 기반의 수치 계산 라이브러리
import numpy as np
np.array([0, 1, 2])
넘파이 배열의 축
1차원 배열 - axis 0
2차원 배열 - axis 0, axis 1
3차원 배열 - axis 0, axis1, axis 2
축 번호가 매겨지는 과정은 코드에서 보는 것이 이해가 더 편하다.
array([0, 1, 2])
array([[0, 1, 2],
[3, 4, 5]])
array([[[0, 1, 2],
[3, 4, 5]],
[[0, 1, 2],
[3, 4, 5]]])
가장 바깥쪽 [ 부터 0, 1, 2 순으로 매겨진다.
ndarray.dtype: 배열의 데이터 타입
넘파이 배열의 장점
- 메모리 사용 효율이 좋고, 계산 속도가 빠름
- 선형 대수 연산 지원
- 벡터화 연산 지원
파이썬 튜플: 순서가 있고, 변경할 수 없는 콜렉션 자료형, 다양한 데이터를 한 번에 저장할 수 있음, ()로 작성, 값을 변경, 추가, 삭제할 수 없음
np.array(('i', 'j', 'k'))
ndarray.shape: 배열의 축 순서대로 크기를 튜플로 반환
ndarray.ndim: 차원의 개수를 반환
ndarray.itemsize: 배열 요소의 데이터 크기를 byte 단위로 반환
ndarray.size: 배열의 총 요소 개수를 반환
초기화 함수로 넘파이 배열 생성
np.zeros(shape, [dtype]): shape에 모양을 지정, 모든 요소를 0으로 초기화
np.ones(shape, [dtype]): 모든 요소를 1로 초기화
np.empty(shape): 빈 배열을 생성
np.arange(start, stop, step, dtype): start이상 stop미만 step간격으로 배열 생성
np.linspace(start, stop, num, endpoint, retstep, dtype): start이상 stop 이하까지(endpoint: 종료값 포함 여부, 기본값=true) num(기본값=50)개의 배열을 생성(retstep: 요소 사이의 간격을 반환할지 말지 여부, 기본값=false)
arange()와 linspace() 비교
- 쓰이는 곳이 다르다: arange는 일정 간격을 강조해야 하는 데이터가 필요할 때(ex) 시계열 데이터) linspace는 일정한 구간 데이터를 생성할 때(ex) 데이터 시각화, 구간별 통계량 계산)
- 범위를 지정하는 방식이 다르다: arange는 끝 범위 포함X, linspace는 끝 범위 포함
- 반환 요소 개수를 지정하는 방식이 다르다: arange는 간격을 step으로 직접 지정하여 배열 생성, linspace는 간격이 아닌 요소의 개수를 num으로 지정하여 일정한 구간에서 데이터를 균등하게 생성
요소별 연산
*: 곱셈
@: 행렬 곱셈
벡터화 연산: 반복문 없이 배열의 모든 요소에 연산을 적용
reshape(): 원본 배열을 변경하지 않고, 새로운 배열을 반환, -1을 인수로 전달하면 자동으로 요소 개수를 맞춤
resize(): 원본 배열 자체를 변형
현업에서 reshape, resize
- 다양한 형태의 배열 사용: 1차원 배열을 2차원 배열로 변경하거나, 다차원 배열로 조정할 때 ex) 이미지 처리
- 데이터 무결성 유지: reshape은 원본 배열을 변경하지 않기 때문에 데이터 무결성을 유지하면서도 형태를 조정할 수 있다. ex) 모델 학습 과정
- 메모리 관리: resize는 원본 배열을 직접 변경하기 때문에 메모리를 효율적으로 관리할 수 있고, 대규모 데이터 처리의 성능을 올릴 수 있다. ex) 빅데이터 분석
평탄화: 다차원 배열의 모든 요소를 하나의 행으로 나열, ravel() 또는 reshape(-1) 사용
전치: 행렬에서 행과 열을 서로 바꾸는 연산
현업에서 전치
- 데이터 분석: 특정 변수에 대한 통계량 계산, 데이터를 새로운 형태로 재구성할 때
- 이미지 처리: 이미지 방향 변경, 회전과 같은 이미지 변환 작업에서 자주 활용
np.vstack((배열1, 배열2, ...))
np.hstack((배열1, 배열2, ...))
vstack은 수직으로 배열을 합친다.
hstack은 수평으로 배열을 합친다.
np.vsplit((배열1, 배열2, ...))
np.hsplit((배열1, 배열2, ...))
vsplit은 수직으로 배열을 분할한다.
hsplit은 수평으로 배열을 분할한다.
'데이터 분석 > 파이썬 데이터 분석가 되기+챗GPT' 카테고리의 다른 글
1장 연습문제 (0) | 2025.01.13 |
---|