Notice
Recent Posts
Recent Comments
Link
관리 메뉴

뛰는 놈 위에 나는 공대생

[Python] Numpy 라이브러리 (1) 본문

프로그래밍 Programming/파이썬 Python

[Python] Numpy 라이브러리 (1)

보통의공대생 2021. 3. 26. 22:40

List가 기본적으로 파이썬에서 제공하는 collection이지만 데이터 분석에 사용하기에는 불편한 점이 있다.

- element 단위로 계산하는 것이 불편하다.

 

Numpy가 데이터 분석에 적절한 라이브러리가 될 수 있다.

 

사용하기 쉽고 빠르며, 계산이 전체 array에 적용될 수 있다.

 

Numpy의 특징

homogeneous collection of "iterms" of the same "data-type" (dtype)

linear algebra 등의 수학적 내용을 적용하기 편리하다.

C, C++, FORTRAN과 잘 호환된다.

 

ndarray : a fast and space-efficient multidimensional array providing vectorized arithmetic operations and sophisticated broadcasting capabilities

Numpy가 빠른 이유는 array 자체에 data를 담고 있기 때문이다. List는 데이터의 주소를 저장하고 그 주소에 또

데이터가 저장되어있다. 그래서 데이터에 접근하기 위해서는 데이터 주소를 가져오고, 그 주소로 데이터를 가져오는 두 단계를 거쳐야 하기 때문에 numpy보다 느리다.

 

ndarray에 대한 설명

 

1. Create ndarrays

 

list를 만들어서 np.array()안에 넣는 방법

np.zeros, np.ones, np.zeros_like, np.ones_like, np.arange

np.arange는 1차원 array만 출력하기 때문에 reshape를 이용해서 차원을 바꿔줘야한다.

 

full : np.full((2,3),5) 5로 채워진 (2,3) matrix

eye : np.eye(5) 5 by 5 identity matrix

random : random values로 채워진 array 출력

empty : 0으로 채운 matrix (zeros와 무슨 차이지?)

 

 

2. Dimension, shape, data types

 

(2,3,3) 크기의 array가 있을 때

data.ndim : 3

data.shape : (2,3,3)

data.dtype : dtype('float64')

 

ndim은 몇 차원인지, shape은 각 차원의 원소 갯수, dtype은 array에 들어간 데이터의 타입

 

 

3. Operations between arrays and scalars

 

vectorization : array는 array의 원소에 대한 operation을 loop없이 수행할 수 있다.

 

 

4. Universal Functions(ufunc) : Fast Element-wise Array Functions

 

element마다 계산을 수행할 수 있도록 numpy에 주어진 function들이 있다.

 

Unary ufuns : 2개의 array를 input으로 받는 elementwise function

 

Unary functions
binary functions

 

5. Basic Indexing and Slicing

 

array를 슬라이싱할 때, 그것은 array의 복제본이 아니라 array를 보는 view에 가깝다. 따라서 어떤 array를 슬라이싱해서 다른 변수에 집어넣고, 그 변수를 새로운 값으로 바꾸면 원본 array도 바뀐다.

arr = np.array([1,2,3,4,5])
arr_slice = arr[1:2] # array([2,3])
arr_slice[0] = 1 # arr_slice=array([1,3])

arr # array([1,1,3,4,5])

# copy하고 싶을 때
arr_slice = arr[2:3].copy()

 

6. Boolean indexing

 

true, false indexing을 이용해 원하는 값만 골라낼 수 있다.

 

 

7. Data Processing Using Arrays

 

1) Expressing Conditional Logic as Array Operations

 

np.where함수

vectorized version of the nernary expression z if condition else y

 

np.where(condition, array)

condition에서 np.array([False True False True True])와 같은 결과이기 때문에

 

np.cumsum : cumulative sum, sum을 계속 쌓아가면서 더해주는 것

np.sum

np.mean

 

2) Methods for Boolean Arrays

 

arr = randn(100)
(arr>0).sum() # 0보다 큰 원소의 갯수 세기
np.where(arr>0, arr, 0).sum() # 0보다 큰 원소를 전부 더하기

 

 

3) Sorting

 

np.sort(array, 0) : axis 0 기준으로 작은 것부터 정렬

np.sort(array, 1) : axis 1 기준으로 작은 것부터 정렬

array.sort(0) 으로 표현할 수도 있다.

 

np.unique를 이용해 개별적인 값이 무엇이 있는지 알 수 있다.

np.in1d(array, [2,3,6]) 두 번째 입력([2,3,6]) 중에서 array에 있으면 True, 없으면 False return

 

Comments