numpy ?
- Numerical Python의 약자.
- 파이썬에서 수치 연산을 효율적으로 수행하기 위한 핵심 라이브러리
- 다차원 배열을 지원함
- 배열 생성 함수
- np.array(): 배열 생성
- np.zeros(): 0으로 채워진 배열 생성
- np.ones(): 1로 채워진 배열 생성
- np.arange(): 지정된 범위 내에서 일정 간격으로 배열 생성
- np.linspace(): 시작과 끝 사이에서 일정 간격으로 배열 생성
- np.eye(): 단위 행렬(Identity Matrix) 생성
- np.random.rand(): 0과 1 사이에서 난수로 채워진 배열 생성
- np.random.randint(): 지정된 범위에서 정수 난수 배열 생성
- 기본 수학 함수
- np.add(), np.subtract(): 배열 간 덧셈, 뺄셈
- np.multiply(), np.divide(): 배열 간 곱셈, 나눗셈
- np.power(): 배열 요소의 제곱 계산
- np.mod(): 나머지 계산
- np.exp(): 지수 함수
- np.log(): 자연 로그 함수
- np.sqrt(): 제곱근 함수
- np.sin(), np.cos(), np.tan(): 삼각 함수
- 배열 연산 및 통계 함수
- np.sum(): 배열 요소들의 합
- np.mean(): 평균 계산
- np.median(): 중간값 계산
- np.var(): 분산 계산
- np.std(): 표준 편차 계산
- np.min(), np.max(): 최소값, 최대값 계산
- np.cumsum(): 배열 요소의 누적 합
- np.cumprod(): 배열 요소의 누적 곱
- np.sort(): 배열 정렬
- np.argsort(): 정렬된 배열의 인덱스 반환
- 배열 모양 변경 함수
- np.reshape(): 배열의 모양을 변경
- np.ravel(): 다차원 배열을 1차원으로 평탄화
- np.transpose(): 배열의 축(axes)을 전치(행렬의 행과 열을 교환)
- np.vstack(), np.hstack(): 배열을 수직 또는 수평으로 결합
- 집합 연산 함수
- np.unique(): 배열의 고유한 요소 반환
- np.intersect1d(): 두 배열 간의 교집합 반환
- np.union1d(): 두 배열 간의 합집합 반환
- np.setdiff1d(): 배열 간 차집합 반환
- 선형 대수 함수
- np.dot(): 두 배열 간의 행렬 곱
- np.matmul(): 행렬 곱 계산
- np.linalg.inv(): 역행렬 계산
- np.linalg.det(): 행렬식 계산
- np.linalg.eig(): 행렬의 고유값과 고유벡터 계산
- np.linalg.svd(): 특이값 분해(SVD)
- np.linalg.solve(): 선형 방정식 풀이
- 기타 유용한 함수
- np.where(): 조건에 따라 배열의 값을 선택
- np.concatenate(): 여러 배열을 연결
- np.split(): 배열을 여러 부분으로 나눔
- np.tile(): 배열을 여러 번 반복
- np.clip(): 배열 요소의 값이 주어진 최소, 최대 값을 벗어나지 않도록 제한
with
- 자원(resource)을 열고 자동으로 닫아주는 문법
- 보통 파일 입출력, 데이터베이스 연결, 락(lock), 네트워크 소켓 등과 같이
열고 나면 반드시 닫아야 하는 작업에 사용
with open("파일이름", "모드") as 파일객체:
파일작업
print 왜 해야하는지?
- 눈으로 결과를 확인하기 위해서

print(img)를 하지 않으면, 밑에 5000 이렇게 있는 부분이 나옴 (범위가 -5000 ~ +5000 인지 확인할 수 있음)
np.where
with open(file_path, 'rb') as f:
raw_data = np.frombuffer(f.read(), dtype=np.uint16)
data = np.where((raw_data <= 5000), raw_data, 5000)
data = np.where((data >= -5000), data, -5000)
Q. 왜 np.where((raw_data <= 5000), raw_data, 5000) 이렇게 해야되는지?
np.where(조건문, true값, false값)
- 5000보다 작을 때는 raw_data(5000보다 작은 데이터의 값)
- 5000보다 크면 -> 5000으로 변경
np.reshape
import numpy as np
a = np.arange(6)
print("Original array:", a)
b = a.reshape((2, 3))
print("Reshaped to 2x3 array:\n", b)
a = np.arange(24).reshape((2, 3, 4))
print("Original 3D array:\n", a)
[
[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11]
],
[
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23]
]
]
np.frombuffer
- 바이트 데이터(버퍼)를 npmpy 배열로 변환해주는 함수
with open(file_path, 'rb') as f:
raw_data = np.frombuffer(f.read(), dtype=np.uint16)
<공식 문서 기준>
numpy.frombuffer(buffer, dtype=float, count=-1, offset=0)
| 인자 | 설명 |
|---|
buffer | 바이트 객체 (bytes, bytearray, memoryview 등) |
dtype | 어떤 타입으로 해석할지 (int32, float64, 'S1', 등) |
count | 읽을 요소 개수 (-1이면 가능한 만큼 전부) |
offset | 몇 바이트 뒤에서부터 읽을지 (0부터 시작) |
plt.savefig
- 이미지 저장
- savefig(
경로와 저장할 파일명 작성)
plt.savefig('C:\\Users\\admin\\Desktop\\SBR_013\\00\\SBR_013.png')
plt.show()
Q. 왜 빈화면이 떴는지?
- savefig()와 show()의 순서 변경하기
plt.show()
plt.savefig()