Day_3 01. numpy

작성일

3 분 소요

numpy

1. numpy over view

  • Numerical Python
  • 파이썬의 고성능 과학 계산용 패키지
  • Matrix와 Vector와 같은 Array 연산의 사실상의 표준
  • 한글로 넘파이로 주로 통칭
  • 누군가는 넘피/늄파이라고 부르기도 함

1.1 numpy의 특징

  • 일반 List에 비해 빠르고, 메모리 효율적
  • 반복문 없이 데이터 배열에 대한 처리르 지원함 -> 엄청 중요한 특징
  • 선형대수와 관련된 다양한 기능을 제공함
  • C, C++, 포트란 등의 언어와 통합 가능

1.2 numpy install

conda install numpy

1.3 numpy 호출 방법

import numpy as np
  • 일반적으로 numpy는 np라는 alias(별칭) 이용해서 호출함
  • 특별한 이유는 없음, 세계적인 약속 같은 것

2. ndarray

2.1 array creation

  • numpy는 np.array 함수를 활용해 배열을 생성
    • ndarray
  • numpy는 하나의 데이터 type만 배열에 넣을 수 있음
  • List와 가장 큰 차이점 -> dynamic typing not supported
  • C의 Array를 사용하여 배열을 생성
test_array = np.array([1, 2, 3, 4], dtype=float)
  • shape : numpy array의 dimension 구성을 반환
    • array의 크기, 형태 등에 대한 정보
  • dtype : numpy array의 데이터 type을 반환
    • ndarray의 single element가 가지는 data type
    • 각 element가 차지하는 memory의 크기가 결정됨
  • array의 RANK에 따라 불리는 이름이 다름
    • Rank 0 : scalar
    • Rank 1 : vector
    • Rank 2 : matrix
    • Rank 3 : 3-tensor
    • Rank n : n-tensor
  • nbytes
    • ndarray object의 메모리 크기를 반환함
    • 32bits -> 4bytes
    • 64bits -> 8bytes

3. Handling shape

3.1 reshape

  • Array의 shape의 크기를 변경함, element의 갯수는 동일
  • -1 : size를 기반으로 row/column 개수 선정

3.2 flatten

  • 다차원 array를 1차원 array로 변환

3.3 indexing

  • list와 달리 이차원 배열에서 [0, 0] 표기법을 제공
  • matrix 일 경우 앞은 row 뒤는 column을 의미

3.4 slicing

  • list와 달리 행과 열 부분을 나눠서 slicing이 가능
  • matrix의 부분 집합을 추출할 때 유용

4. creation function

4.1 arange

  • array의 범위를 지정하여, 값의 list를 생성하는 명령어
  • np.arange(시작, 끝, step)
    • step 에 float 값도 가능

4.2 ones

  • 0으로 가득찬 ndarray 생성
  • np.zeros(shape, dtype, order)

4.3 zeros

  • 1로 가득찬 ndarray 생성
  • np.ones(shape, dtype, order)

4.4 empty

  • shape만 주어지고 비어있는 ndarray 생성
  • memory initialization이 되지 않음
  • np.empty(shape, dtype)

4.5 something_like

  • 기존 ndarray의 shape 크기 만큼 1, 0 또는 empty array를 반환
  • zeros_like
  • ones_like
  • empty_like

4.6 identity

  • 단위 행렬(i 행렬)을 생성

4.7 됻

  • 대각선이 1인 행렬, k 값의 시작 index의 변경이 가능
  • 단위행렬과 다름

4.8 diag

  • 대각 행렬의 값을 추출

4.9 random sampling

  • 데이터 분포에 따른 sampling으로 array를 생성

5. operation functions

  • axis
    • 모든 operation function을 실행할 때 기준이 되는 dimension 축
  • sum
    • ndarray의 element들 간의 합을 구함, list의 sum 기능과 동일
  • mean
  • std
  • var

6. mathematical functions

  • 다양한 수학 연산자를 제공
  • exp
  • log
  • sin
  • cos
  • sinh
  • tanh

7. concatenate

  • numpy array를 합치는(붙이는) 함수
  • vstack
  • hstack
  • concatenate
  • newaxis : 축 하나 추가

8. array operation

  • numpy는 array간의 기본적인 사칙 연산을 지원

8.1 element-wise operation

  • array간 shape이 같을 때 일어나는 연산

8.2 Dot product

  • Matrix의 기본 연산,
  • array간 shape이 같을 때 일어나는 연산, dot 함수 사용

8.3 trnaspose

  • transpose 또는 T attribute 사용

8.4 broadcasting

  • shape이 다른 배열 간 연산을 지원하는 기능
  • scalar - vector 외에도 vector - matrix 간의 연산도 지원

9. numpy performance

  • timeit
    • jupyter 환경에서 코드의 퍼포먼스를 체크하는 함수
  • 일반적으로 속도는 아래 순
    • for loop < list comprehension < numpy
  • 100,000,000 번의 looop이 돌 때, 약 4배 이상의 성능 차이를 보임
  • Numpy는 C로 구현되어 있어, 성능을 확보하는 대신 파이썬의 가장 큰 특징인 dynamic typing을 포기
  • 대용량 계산에서 가장 흔히 사용
  • Concatenate처럼 계산이 아닌, 할당에서는 연산 속도의 이점이 없음

10. comparison

10.1 All & Any

  • array의 데이터 전부(and) 또는 일부(or)가 조건에 만족 여부 반환
  • any : 하나라도 조건에 만족하면 True
  • all : 모두가 조건에 만족하면 True

10.2 배열의 비교

  • numpy는 배열의 크기가 동일 할 때 element간 비교의 결과를 Boolean type으로 반환

10.3 np.where

  • np.where(조건, 참일 때 값, 거짓일 때 값)
  • np.where(조건) : index값 반환

10.4 np.isnan

  • boolean 값
  • Not a Number : NaN, Inf 판단

10.5 np.isfinite

  • boolean 값
  • 유한한 수 인지 판단

10.6 argmax & argmin

  • array내 최대값 또는 최소값의 index를 반환
  • axis 기반해 반환

11. boolean & fancy index

11.1 boolean index

  • 특정 조건에 따른 값을 배열 형태로 추출
  • Comparison opeartion 함수들도 모두 사용가능
  • shape이 같아야함
  • Comparison opeartion 함수들도 모두 사용가능

11.2 fancy index

  • numpy는 array를 index value로 사용해서 값 추출
  • take() : 같은 효과
  • 반드시 integer로 선언
  • shape이 같을 필요 없음
  • matrix 형태의 데이터도 가능

12. numpy data i/o

12.1 loadtxt & savetxt

  • text type의 데이터를 읽고, 저장하는 기능
  • save : pickle

댓글남기기