clear_uncertainty

네이버 부스트캠프 모각공 캠페인 5일차 - Numerical Python - numpy 본문

네이버 부스트캠프 - AI Tech 3rd/꼭 알아야하는 파이썬 기초지식

네이버 부스트캠프 모각공 캠페인 5일차 - Numerical Python - numpy

SOidentitiy 2021. 11. 12. 23:25
728x90

모든 설명 및 자료의 출처는 네이버 부스트코스의 <[부스트캠프  AI Tech 3기] Pre-Course>입니다.

(https://www.boostcourse.org/onlyboostcampaitech3/joinLectures/329424)

 

<꼭 알아야하는 파이썬 기초 지식>

 Numerical Python - numpy

 

어떻게 행렬과 매트릭스를 코드로 표현할 수 있는가?

위 방식의 문제점

-다양한 Matrix 계산을 어떻게 만들 것 인가?

-굉장히 큰 Matrix에 대한 표현

-처리 속도 문제 - python 은 Interoreter 언어 > 따라서 속도가 느립니다.

→해결 방안: 적절한 패키지의 활용 : numpy

 

numpy

 

Numerical Python

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

Matrix와 Vector와 같은 Array 연산의 사실상의 표준

일반 List에 비해 빠르고, 메모리 효율적

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

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

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

↑numpy 호출 방법

일반적으로 numpy 는 np라는 alias(별칭)를 이용하여 호출 , 특별한 이유없이, 세계적인 약속

 

array creation

 

numpy는 np.array 함수를 활용 배열을 생성합니다. → ndarray

numpy는 하나의 데이터 type만 배열에 넣을 수 있습니다.

List와 가장 큰 차이점 → dynamic typing not supported / dynamic typing 은 파이썬의 가장 큰 특징

C의 Array를 사용하여 배열을 생성합니다.

 

Python List는 주소값을 List에 할당합니다. 따라서 List의 변형이 쉽습니다.

Numpy Array는 데이터가 차례대로 메모리의 공간에 할당됩니다.

 

shape : numpy array 의 dimension 구성을 반환함

dtype : numpy array의 데이터 type을 반환함

array 의 RANK에 따라 불리는 이름이 있음

 

shape : array의 크기, 형태 등에 대한 정보

ndim: number of dimension

size: data의 개수

numpy는 list와 달리 dynamic typing이 지원되지않기때문에 dtype(data type)를 통해 선언해줘야합니다.

 

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

 

Handling shape

 

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

 

 

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

 

indexing for numpy array

 

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

matrix일 경우 앞은 row 뒤는 column을 의미합니다.

a[0,2] = 10

위의 코드를 입력하면 3이 10으로 할당됩니다.

 

slicing for numpy array

 

list와 달리 행과 열 부분을 나눠서 slicing 이 가능합니다.

matrix의 부분 집합을 추출할 때 유용합니다.

 

creation function

 

arange : array의 범위를 지정하여, 값의 list를 생성하는 명령어 = List의 range 효과

zeros  0으로 가득찬 ndarray 생성

ones 1로 가득찬 ndarray 생성

 

 

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

 

something_like  기존 ndarray의 shape 크기 만큼 1, 0 또는 empty array를 반환

 

identity  단위 행렬(i 행렬)을 생성함

 

eye  대각선인 1인 행렬, k 값의 시작 index의 변경이 가능 / identity 와 다르게 시작하는 지점을 변경 가능

 

diag  대각 행렬의 값을 추출

 

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

np.random.normal 정규분포 추가설명(https://numpy.org/doc/stable/reference/random/generated/numpy.random.normal.html)

Draw random samples from a normal (Gaussian) distribution.

The probability density function of the normal distribution, first derived by De Moivre and 200 years later by both Gauss and Laplace independently, is often called the bell curve because of its characteristic shape (see the example below).

The normal distributions occurs often in nature. For example, it describes the commonly occurring distribution of samples influenced by a large number of tiny, random disturbances, each with its own unique distribution.

operation function

 

sum ndarray의 element 들 간의 합을 구함, list의 sum 기능과 동일

 

axis  모든 operatoin function 을 실행할 때 기준이 되는 dimension

 

mean & std  ndarray들 간의 평균 또는 표준편차를 반환

 

concatenate  numpy array 를 합치는(붙이는) 함수

 

array operations

 

Operations b/t arrays: numpy는 array 간의 기본적인 사칙 연산을 지원함

 

Dot product : Matrix 의 기본 연산, dot 함수 사용 / 행렬간의 곱셈

 

transpose : transpose 또는 T attribute 사용 (전치함수)

 

boradcasting : Shape이 다른 배열 간 연산을 지원하는 기능

 

Numpy performance

 

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

일반적으로 속도는  for loop < list comprehension < numpy

100,000,000 번의 loop이 돌 때 약, 4배 이상의 성능 차이를 보임

Numpy 는 C로 구현되어 있어 성능을 확보하는 대신, 파이썬의 가장 큰 특징인 dynamic typing 을 포기

대용량 계산에서는 가장 흔히 사용

Concatenate 처럼 계산이 아닌 할당에서는 연산 속도의 이점이 없음

 

comparisons : numpy array 간의 비교

 

All & Any  Array 의 데이터 전부 또는 일부가 조건 만족 여부 반환

 

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

 

argmax & argmin

 

argmax  array 내 최댓값 index 반환

argmin  array 내 최솟값 index 반환

 

axis 기반의 반환

 

boolean index

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

Comparison operation 함수들도 모두 사용가능

 

fancy index

 

numpy는 array 를 index value 로 사용해서 값 추출

 

numpy data i/o

 

loadtxt & savetxt

text type 의 데이터를 읽고(loadtxt), 저장하는 기능(savetxt)

 

 


출처

 

[부스트캠프 AI Tech 3기] Pre-Course

부스트코스 무료 강의

www.boostcourse.org

 

 

728x90