NumPy(Numerical Python)
1. NumPy란??
- NumPy는 Numerical Python의 약자로 과학 및 공학 분야에서 사용되는 오픈 소스 파이썬 라이브러리이다.
- NumPy 라이브러리에는 다차원 배열 및 행렬 데이터 구조가 포함되어있다.
- NumPy는 배열로 저장된 값에 대한 수학 연산을 수행하는데 사용된다.
- 특징
- 다차원 배열(Array) 지원
- 빠른 수학 연산 가능
- 벡터화(Vectorization) 지원
- Pandas, Matplotlib 등 데이터 분석 라이브러리의 기반
- 설치
pip install numpy
- 사용
import numpy as np
2. 리스트와 NumPy 배열 차이
일반 리스트
a = [1, 3, 5]
b = [2, 4, 6]
print(a + b)
결과
[1, 3, 5, 2, 4, 6]
리스트는 연결(Concatenation)만 수행한다.
NumPy 배열
a = np.array([1, 3, 5])
b = np.array([2, 4, 6])
print(a + b)
print(a * b)
결과
[3 7 11]
[2 12 30]
NumPy는 같은 위치의 원소끼리 계산한다.
이를 벡터화 연산(Vectorized Operation) 이라고 한다.
⭐ 시험/실무 중요
a + b
a - b
a * b
a / b
모두 한 번에 계산 가능
3. ndarray(n차원 배열) 생성하기
- 스칼라: 0차원 배열
- 벡터: 1차원 배열
- 매트릭스(행렬): 2차원 배열
- 텐서: 3차원 배열
array()
arr = np.array([1,2,3])
zeros()
모든 값을 0으로 생성
np.zeros(5)
결과
[0. 0. 0. 0. 0.]
ones()
모든 값을 1로 생성
np.ones(5)
empty()
빈 배열 생성
np.empty(5)
초기값은 랜덤 쓰레기값
arange()
범위 생성
np.arange(5)
결과
[0 1 2 3 4]
범위 생성
np.arange(2,20,3)
결과
[ 2 5 8 11 14 17 ]
linspace()
균등 간격 생성
np.linspace(0,100,num=5)
결과
[ 0. 25. 50. 75. 100.]
4. 데이터 타입 확인
arr = np.array([2,4,6,8])
print(arr.dtype)
결과
int64
Upcasting
서로 다른 자료형이 있으면 자동 형변환
arr = np.array(['서울', '부산', 123])
결과
['서울' '부산' '123']
숫자가 문자열로 변환된다.
5. 배열 정보 확인
arr = np.array([[1,2,3],[4,5,6]])
shape
배열 형태
arr.shape
결과
(2,3)
2행 3열
ndim
차원 수
arr.ndim
결과
2
size
전체 원소 수
arr.size
결과
6
6. 배열 차원 이해하기
0차원 (Scalar)
np.array(12)
1차원 (Vector)
np.array([1,2,3])
2차원 (Matrix)
np.array([
[1,2,3],
[4,5,6]
])
3차원 (Tensor)
np.array([
[[1,2,3],[4,5,6]],
[[7,8,9],[10,11,12]]
])
7. 인덱싱
1차원
arr = np.array([2,4,6,8])
print(arr[0])
print(arr[-1])
결과
2
8
2차원
arr = np.array([
[2,4,6],
[1,3,5]
])
print(arr[1,1])
결과
3
3차원
arr[1,1,2]
처럼
[깊이, 행, 열]
순서로 접근한다.
8. 슬라이싱
arr = np.array([10,11,12,13,14,15])
앞 3개
arr[:3]
4번부터 끝
arr[4:]
중간만
arr[2:5]
9. 조건 필터링
조건 검색
arr = np.array([1,2,3,4,5])
print(arr[arr > 3])
결과
[4 5]
짝수 찾기
arr[arr % 2 == 0]
결과
[2 4]
범위 검색
arr[(arr > 3) & (arr < 9)]
⭐ 중요
&
|
사용
and
or
사용 불가
10. 통계 함수
평균
np.mean(arr)
합계
np.sum(arr)
최대값
np.max(arr)
최소값
np.min(arr)
NaN 제외 평균
np.nanmean(arr)
⭐ 데이터 분석에서 자주 사용
11. axis 이해하기
scores = np.array([
[85,90,88,95],
[92,87,85,89],
[78,85,91,87]
])
axis=0 (행축): 세로 방향 (열끼리 묶음)
열 기준 계산
np.mean(scores, axis=0)
결과
과목별 평균
axis=1 (열축): 가로 방향 (행끼리 묶음)
행 기준 계산
np.mean(scores, axis=1)
결과
학생별 평균
⭐ 외우기
axis=0 → 세로
axis=1 → 가로
12. reshape()
배열 형태 변경
arr = np.arange(1,13)
arr.reshape(3,4)
결과
3행 4열
배열 형태 변경
arr.reshape(2,6)
결과
2행 6열
13. flatten()
다차원 배열 → 1차원 배열
arr.flatten()
14. np.where()
조건에 따라 값 변경
np.where(arr > 5, "합격", "불합격")
결과
조건 참 → 합격
조건 거짓 → 불합격
실제 활용
재고 관리
status = np.where(
inventory >= 30,
"충분",
"부족"
)
** 실무에서 가장 많이 쓰는 NumPy 함수 TOP 10
함수용도
| np.array() | 배열 생성 |
| np.arange() | 범위 생성 |
| np.linspace() | 균등 간격 생성 |
| np.zeros() | 0 배열 |
| np.ones() | 1 배열 |
| np.mean() | 평균 |
| np.sum() | 합계 |
| np.where() | 조건 처리 |
| np.reshape() | 형태 변경 |
| np.nanmean() | NaN 제외 평균 |
느낀점
오늘은 numpy에 대해 배웠다. 데이터를 만지는데 기초에 들어섰다. 예전에 학교 수업을 들으면서 잠깐 사용한 기억은 있지만 그 당시 너무 기초만 사용해보았고 너무 오래되었던 기억이라 새로 한다는 생각으로 수업을 따라가야겠다.
——————————————————————————
본 후기는 [한글과컴퓨터x한국생산성본부x스나이퍼팩토리] 한컴 AI 아카데미 (B-log) 리뷰로 작성 되었습니다.