7. 다차원 배열 라이브러리: Numpy

최지온·2023년 10월 25일

프로그래밍 응용

목록 보기
7/10
post-thumbnail

NumPy 소개

Numpy는 고성능 과학 계산 컴퓨팅과 데이터 분석을 위한 기본 패키지

  • Numerical Python의 줄임말
  • 다차원 배열의 자료구조 클래스인 ndarray 클래스를 지원

배열 연산은 C로 구현된 내부 반복문을 사용
파이썬 반복문에 비해 속도가 빠름

  • 벡터와 행렬을 사용하는 선형대수 계산에 주로 사용

벡터화 연산을 이용하여 간단한 코드로도 복잡한 선형 대수 연산을 수행

배열 인덱싱을 사용한 질의 기능을 이용하여 간단한 코드로도 복잡한 수식을 계산

빅데이터 및 머신러닝 응용 분야에 기본 패키지로 활용

배열 생성

NumPy 다차원 배열의 자료구조 클래스인 ndaaray 클래스를 사용하여 배열 생성

  • np.array() 함수
    입력 데이터(리스트, 튜플 등)를 ndarray로 변환

  • 배열 속성
    dtype: 자료형 표시
    ndim: 차원의 갯수 즉 랭크를 표시
    shape: 각 차원의 크기를 튜플 형식으로 표시
    size: 원소의 개수를 알려 줌.

배열 표현

배열(dimension)의 차원을 축(axis)이라 하며, 축의 갯수를 랭크(rank)라고 함.

배열 초기화 생성

NumPy는 원하는 구조(shape)의 배열을 생성하고, 각 요소를 특정 값으로 초기화하는 함수 제공

  • np.zeros(shape, dtype=float, order='C')
    지정된 구조의 배열을 생성하고, 모든 요소를 0으로 초기화

  • np.zeros(shape, dtype=float, order='C')
    지정된 구조의 배열을 생성하고, 모든 요소를 1로 초기화

  • np.zeros(shape, fill_value, dtype=None, order='C')
    지정된 구조의 배열을 생성하고, 모든 요소를 지정한 "fill_value"로 초기화

  • np.zeros(shape, dtype=float, order='C')
    지정된 구조의 배열 생성하고, 초기화 값 없음

  • like 함수

  • 지정된 배열과 같은 구조의 행렬을 생성

  • np.zeros_like, np.ones_like, np.full_like, np.enpty_like

배열 연산

NumPy는 배열 및 요소 간의 연산을 지원

  • 산술 연산 +, -, *, /

  • 비교 연산 >, <, >=, <=, ==, !=

  • 수학 함수 exp(), sprt(), sin(), cos(), tan()

  • 집계 함수 sum(), mean(), min(), max(), std(), var(), cumsum(), argmax(), argmin()

기본적으로 배열 연산은 동일한 구조(shape)의 배열 간 연산

  • 구조가 다른 배열 간 연산시 브로드캐스팅(broadcasting) 적용

배열 연산 - 집계 함수

집계 함수는 축(axis)를 기준으로 집계되는 요소들 계산

  • 축이 지정되지 않으면 axis=None
  • 2차원 배열 기준 집계함수의 축
  • None (전체), 0 (열의 요소 집계), 1 (행의 요소 집계)

브로드캐스팅 (Broadcasting)

구조(shape)가 다른 배열 간의 연산 시 브로드캐스팅 적용

  • 서로 크기가 다른 두 배열을 각 축 방향으로 중복 확장 시켜서 두 배열의 크기가 같아지게 만든 후 연산을 수행

데이터 생성 및 구조 변형

데이터 생성

  • numpy.arrange([start,] stop[step,], dtype = None)
  • start부터 stop 미만까지 step 간격으로 데이터를 생성

데이터 구조 변형

  • ndarray.reshape(shape, order='C')
  • 데이터는 보존하면서 배열의 구조를 변경

슬라이싱 (Slicing)

슬라이싱을 사용하여 배열의 요소 중 일부를 참조

  • 배열 인덱스에서 시작:끝 으로 위치 지정
    끝으로 지정된 인덱스는 불포함
    -1은 마지막 요소의 인덱스를 의미
  • 슬라이싱된 배열은 복사되는 것이 아니라 원본 배열 참조
    슬라이싱 배열을 변경하면 원본 변경
    복사 시에는 numpy.copy() 함수 사용

불린 인덱싱 (Boolean Indexing)

불린 인덱싱은 배열 각 요소의 선택 여부를 True, False로 지정

  • True에 해당하는 인덱스의 만을 참조

조건 연산

조건 연산

  • numpy.where(cond, x, y)
  • if cond x else y
  • cond는 조건 또는 불린 인덱싱

팬시 인덱싱 (Fancy Indexing)

팬시 인덱싱은 배열로 인덱스를 표시

Matplotlib.pylot 라이브러리

Matplotlib.pylot 라이브러리는 파이썬에서 자료를 차트나 그래프 등으로 시각화하는 패키지

profile
왕초보입니다

0개의 댓글