(Python 6강) numpy

210804

Numpy

  • Numerical Python

  • 파이썬의 고성능 과학 계산용 패키지

  • Matrix와 Vector와 같은 Array연산의 표준

  • 한글로 넘파이로 주로 통칭

특징

  • 일반 List에 비해 빠르고 메모리 효율적이다

  • 반복문 없이 데이터 배열에 대한 처리를 지원한다

  • 선형대수와 관련된 다양한 기능을 제공한다

  • C, C++, 포트란 등의 언어와 통합 가능

ndarray

import numpy as np
  • numpy의 호출 방법

  • 일반적으로 np라는 별칭 이용

test_array = np.array([1, 4, 5, 8], float)
print(test_array)
type(test_array[3])
  • numpy는 np.array 함수를 활용해서 배열을 생성하는데 이 배열을 ndarray 라고 한다

  • numpy는 하나의 데이터 타입만 배열에 넣을 수 있다.

    • 리스트와의 차이점

    • dynamic typing을 지원하지 않는다고 한다

  • C의 Array를 사용하여 배열을 생성한다

array creation

  • 파이썬은 임의의 위치에 저장되는데 비해 C언어는 순서대로 저장된다.

    • c언어의 지역성

  • 또, 크기가 고정되어있다.

  • 그래서, 속도가 빠른것

  • shape : ndarr의 dimension 구성을 반환

    • array의 크기, 형태에 대한 정보

  • dtype : ndarrr의 type을 반환

  • ndim : number of dimensions

  • size : data 의 개수

  • nbytes : ndarray object의 메모리 크기를 반환함

    • int는 1byte, float은 4 bytes

    • 파이썬에서 float은 8bytes가 기본이다. 위는 넘파이 기준

Handling shape

reshape : Array의 shape의 크기를 변경함. element의 갯수는 동일

  • -1 은 알아서 컴퓨터가 계산할 수 있는 부분을 의미한다

flatten : 다차원 array를 1차원 array로 변환

  • (2, 2, 4) => (16, )

indexing for numpy array

  • list와 달리 이차원 배열에서 [0, 0] 표기법을 제공한다

    • a[0, 0] == a[0][0]

    • 둘 다 가능하다

  • 또, list와 달리 행과 열 부분을 나눠서 slicing이 가능하다

Create Functions

arange

  • array의 범위를 지정하여 값의 list를 생성하는 명령어

zeros

  • 0으로 가득찬 ndarr 생성

ones

  • 1로 가득찬 ndarr 생성

empty

  • shape만 주어지고 비어있는 ndarr 생성

    • memory initialization이 된 것은 아니다

    • 이미 존재하는 값은 이전에 사용하던 쓰레기값이다

somthing_like

  • 기존 ndarr의 shape 크기만큼 1 또는 0의 array 반환

identity

단위행렬 생성

eye

대각선이 1인 행렬 생성.

  • identity와 다른점은 시작위치를 정할 수 있다

  • np.eye(3, 5, k=2) 면 2만큼 이동된 3 * 5 행렬 생성

diag

대각 행렬의 값을 추출함

random sampling

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

Operation functions

sum

element간의 합

axis

모든 operation function을 실행할 때 기준이 되는 dimension 축이다.

mathematical functions

다양한 수학 연산자

  • np.exp

  • np.sqrt

  • np.mean

  • np.std

Concatenate

vstack

  • numpy array를 세로로 붙임

hstack

  • numpy array를 가로로 붙임

concatenate

  • axis = 0 : vstack과 동일

  • axis = 1: hstack과 동일

newaxis

  • 축을 하나 늘린다

Opertaions b/t arrays

  • 기본적으로 numpy array간의 기본적인 사칙 연산을 지원한다

    • 이 때 element-wise operation으로 연산된다

dot product

  • 내적 함수

  • np.array.dot(np.array) 꼴로 사용

transpose

  • 전치 함수

  • np.array.T 의 꼴로 사용

broadcasting

  • shape이 다른 배열 간 연산을 지원하는 기능

  • scalar - vector 와 vector - matrix 간에 지원한다

timeit

  • jupyter 환경에서 코드의 퍼포먼스를 체크하는 함수

  • 일반적으로 속도는 다음과 같다

    • numpy > list comprehension > for loop

Comparisons

All & Any

Array의 데이터 전부 또는 일부가 조건에 만족하는지에 대한 여부를 반환한다

numpy는 배열의 크기가 동일한 element간 비교의 결과를 Boolean type으로 반환한다.

where

argmax & argmin

array내 최대값 또는 최소값의 index를 반환

또한, axis 기반의 반환을 할 수 있다

boolean index

특정 조건에 따른 값을 배열 형태로 추출한다.

fancy index

numpy array를 index value로 사용해서 값을 추출한다. 이 때 인덱스로 사용되는 배열은 반드시 정수로 선언되어야 한다.

  • matrix형태도 가능하다

    • a[b][c]

Last updated

Was this helpful?