Python numpy

soominlee·2022년 8월 3일
0

🐍 Python

목록 보기
13/14

*해당 게시글은 <NAVER boostcourse> 에서 수강한 강의를 바탕으로 정리한 내용입니다.

Numpy

: 파이썬 계산용 과학 패키지

  • Matrix, Vector와 같은 Array 연산의 사실상 표준
  • List에 비해 속도가 빠르며, 메모리를 효율적으로 사용함
  • 반복문 없이 데이터 배열에 대한 처리를 지원함
  • 선형대수와 관련된 다양한 기능을 제공함
  • Dynamic typing not supported
    • 하나의 데이터 Type만 배열에 넣을 수 있음 (list와 가장 큰 차이점)
    • C의 Array를 사용하여 배열을 생성함
  • Numpy performance
    - 일반적인 속도 : for loop < list comparison < numpy
    - concatenate 처럼 계산이 아닌 할당에서는 연산 속도의 이점이 없음

1. numpy data structure

Array shape
  • vector.shape : (n,)
  • matrix.shape : (m, n)
  • 3d_tensor.ahep : (l, m, n)

    .ndim : number of dimension
    .size : data의 개수
Array dtype
  • numpy array의 single element가 가지는 data type을 정의해줌으로써 각 element가 차지하는 메모리의 크기가 결정됨
np.array([[1,2,3], [4.5,5,6]], dtype=int)
> array([[1,2,3],
		[4,5,6]])
  • nbytes : ndarray의 object의 메모리 크기를 반환함

2. Handling shape

Reshape

: array의 shape 크기를 변경함, element 갯수 동일 (=array의 size만 같다면 다차원으로 자유로이 변경 가능

-1
size를 기반으로 row 개수 선정
**ex) sklearn의 경우 input으로 vector가 아닌 matrix 형태를 전달해야하기 때문에, .reshape(-1, k) 를 사용하여 형변환을 진행해준다

flatten

: 다차원 array를 1차원 array로 변환 .flatten()

3. Indexing & Slicing

indexing
  • a[0][0] == a[0,0] > 모두 표현 가능
slicing
  • list와 달리 행과 열 부분을 나누어서 slicing이 가능함

4. Creation function

  1. arange(start, end, step): array의 범위를 지정하여 값의 list를 생성하는 명령어
  2. zeros(shape=(tuple), dtype=np.int8, order) : 0으로 채운 ndarray 생성
  3. ones(shape=(tuple), dtype=np.int8, order) : 1로 가득찬 ndarray 생성
  4. empty(shape=(tuple), dtype=np.int8, order) : shape만 주어지고 비어있는 ndarray 생성 (memory initialization이 되어 있지 않음)
  5. something_like(기존matrix) : 기존 ndarray의 shape만큼 1,0 또는 empty array를 반환함
  6. identity(n=, dtype=) : 단위행렬을 생성함
  7. eye()
  8. diag()
  9. random sampling : 데이터 분포에 따른 sampling으로 array를 생성함
    • np.random.uniform() : 균등분포
    • np.random.normal() : 정규분포

5. Operation functions

axis : 모든 operation function을 실행할 때 기준이 되는 dimension 축을 지정할 때 사용

  • axis = 1 : 열 방향 진행
  • axis = 0 : 행 방향 진행
    **pandas와 다름

  1. sum(axis=None) : ndarray의 element들 간의 합을 구함
  2. mean(axis=None), std(axis=None) : ndarray의 element 간의 평균, 표준편차를 구함
  3. 그 밖에도 다양한 수학 연산자들을 제공
    • exponential 관련 연산자 : exp, expml, exp2, log, log2, power, sqrt, ...
    • trigonometric 관련 연산자 : sin, cos, tan, acsin, arcos, atctan
    • hyperbolic 관련 연산자 : sinh, cosh, tanh, ...
  4. concatenate(axis=) : ndarray를 하나의 array로 합침 (vstack, hstack 도 있음)
    - axis0 = vstack
    - axis1 = hstack

6. Array operations

operations between arrays
Numpy는 array간의 기본적인 사칙 연산을 지원함

Element-wise operation

: array간 shape이 같을 때 일어나는 연산
덧셈, 뺄셈, 성분곱 모두 가능

Dot product

: Matrix의 기본 연산으로 dot 함수를 사용함
**앞 array의 열개수 = 뒤 array의 행개수 일 경우 연산 가능

Transpose

: 전치행렬로 변환함
transpose() 또는 T attribute 사용

Broadcasting

: Shape이 다른 배열 간 연산을 지원함

ndarray(vector)-scalar broadcasting ↓

ndarray(vector)-matrix broadcasting ↓

7. Comparisons

All & Any

: 데이터의 전부 또는 일부가 조건에 만족하는지의 여부를 반환함

  • all(condition) : any; 하나라도 조건에 만족한다면 True를 반환함
  • all(condition) : all; 모두가 조건에 만족한다면 True를 반환함
comparison operation
  • numpy는 배열의 크기가 동일할 때 element간 비교 결과를 Boolean type으로 반환해줌

  • 논리연산도 가능함

    • np.logical_and(and condition)
    • np.logical_not(not condition)
    • np.logical_or(not condition)
  • np.where(condition, True case, False case) : 조건을 만족하는 element의 경우 True case, 만족하지 않은 경우 False case를 할당한 array 반환, True, False case가 입력되지 않은 경우에는 조건에 만족하는 index 값 반환

  • np.isnan(array) : check Nan elements

  • np.isfinite(array) : check finite numbers

  • np.argmax, np.argmin : array내 최대값 또는 최소값의 index를 반환

7. Boolean & Fancy index

boolean index

: array에 대해 특정 조건에 따른 값을 배열 형태로 추출할 수 있음

**astype을 통해 binary 형태로 변환 가능

fancy index

: array를 index value로 사용하여 값을 추출하는 방법
*추천시스템에서 잘 사용하는 방법

8. Numpy data i/o

loadtxt & savetxt

: 텍스트파일(txt, csv)로부터 numpy array를 읽어올 수 있고 numpy array를 텍스트파일(txt, csv)로 저장할 수 있음
np.loadtxt, np.savetxt

npy: numpy object

: numpy object(pickle) 형태로 저장하고 불러옴 (binary format)
np.save, np.load

profile
Soominlee

0개의 댓글