python

김민주·2025년 5월 12일

GK

목록 보기
15/15

numpy ?

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

with

  • 자원(resource)을 열고 자동으로 닫아주는 문법
  • 보통 파일 입출력, 데이터베이스 연결, 락(lock), 네트워크 소켓 등과 같이 열고 나면 반드시 닫아야 하는 작업에 사용
with open("파일이름", "모드") as 파일객체:
    파일작업
  • 눈으로 결과를 확인하기 위해서
  • 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

# 1차원 배열을 생성
a = np.arange(6) # a = [0, 1, 2, 3, 4, 5]
print("Original array:", a)

# 2x3 배열로 reshape
b = a.reshape((2, 3)) 
print("Reshaped to 2x3 array:\n", b) 
# b = [[0, 1, 2], 
#     [3, 4, 5]]

# 3차원 배열을 생성
a = np.arange(24).reshape((2, 3, 4))
print("Original 3D array:\n", a)
# a = [
  [  # 첫 번째 블록 (index 0)
    [ 0,  1,  2,  3],
    [ 4,  5,  6,  7],
    [ 8,  9, 10, 11]
  ],

  [  # 두 번째 블록 (index 1)
    [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()

0개의 댓글