Numpy (NUMerical PYthon)

Published by onesixx on

http://cs231n.github.io/python-numpy-tutorial/
http://scipy.github.io/old-wiki/pages/NumPy_for_Matlab_Users
https://github.com/kuleshov/cs228-material/blob/master/tutorials/python/cs228-python-tutorial.ipynb

numerical python

Python은 기본적으로 array(배열)을 지원하지 않음.그 대신 List를 제공 (python에서는 List가 array.

Python은 기본적으로 array(배열)을 지원하지 않기 때문에, Array를 사용하기 위해 Numpy를 활용한다.

Python의 List는 크기가 가변적이고, 어떤 원소 타입이던 저장할 수 있다는 장점이 있지만, 그 장점때문에 C의 array보다 메모리를 더 많이 필요로 한다는 단점이 되기도 함.

Array가 필요할 때는 Numpy의 Array사용

Numpy의 Array는 고정된 크기를 갖기 때문에, Size를 변화하면 기존의 array를 삭제하고 새로운 array를 생성해야 하고, 따라서 메모리에 낭비가 없다.

http://egloos.zum.com/kimfeel82/v/324175

Numpy array 접근 -> a[0,0]

Python list 접근 -> b[0][0]

List와 Array의 차이점

https://chancoding.tistory.com/10

ListArray
index없음
(순차적 저장)
있음
메모리에 저장방식분산되어 저장연속적으로 저장
random access불가능가능
삽입, 삭제쉬움어려움
메모리 할당동적할당
(크기가 계속 변할수 있음)
정적할당
(고정된 크기를 갖음)
크기변경은 삭제후 생성

NumPy의 특징

과학적이고 수학적 Python 기반 패키지들이 NumPy Array 사용

Numpy는 (백터화하여 계산하기 때문에) 루프나, 인덱싱이 없다.

Numpy는 다차원적인 배열 객체, 다양한 파생 객체(마스크 된 배열 및 행렬 등) 및 에 대한 일련의 루틴, 수학적, 논리적, 형상 조작, 정렬, 선택, I/O, 이산 푸리에 대한 신속한 작업 변환, 기본 선형 대수, 기초 통계 연산, 무작위 시뮬레이션 등의 다양한 작업을 지원

Numpy Array to List

numpyarray.tolist()

ndim, shape, dtype, astype

npArry1 = np.array([[1,2,3,4], [5,6], [7,8,9]])

array([list([1, 2, 3, 4]), list([5, 6]), list([7, 8, 9])], dtype=object)

npArry1.ndim     # 1
npArry1.shape    # (3,)
npArry1.dtype    # dtype('O')
arry1 = np.array([[1,2,3], [4,5,6], [7,8,9]])



arry1.ndim       # 2
arry1.shape      # (3,3)
arry1.dtype      # dtype('int64')
arry1.astype('int8')

Axis

array1 = np.array([1,2,3])
array1.ndim   # 1
array1.shape  # (3,)

array2 = np.array([[1,2,3],
                   [2,3,4]])
array2.ndim   # 2
array2.shape  # (2,3)

array3 = np.array([[1,2,3]])
array3.ndim   #  2
array3.shape  # (1,3)

array3 = np.zeros((4, 2,3))
array3.ndim  # 3

array([[[0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.]],

       [[0., 0., 0.],
        [0., 0., 0.]]])

reshape

a = np.arange(0,12,2)
array([ 0,  2,  4,  6,  8, 10])

len(a)    # 6 
type(a)   # numpy.ndarray

a.reshape(2,3)

#array([[ 0,  2,  4],
#       [ 6,  8, 10]])

a.reshape(3,-1)
a.reshape(-1,2)
#array([[ 0,  2],
#       [ 4,  6],
#       [ 8, 10]])

Indexing

aa = np.array([[ 0,  2],
               [ 4,  6],
               [ 8, 10]])

aa[2,0]  # 8

aa[:,0]  # 연속 array([0, 4, 8])

aa[[1,2], ]  # 불연속
# array([[ 4,  6],
#        [ 8, 10]])

aa[aa>3] # array([ 4,  6,  8, 10])

sort

sort()

np.sort( ) 원본 그대로
ndarray.sort( ) 원본 수정됨

내림차순정렬 np.sort()[::-1]

np.sort( myArray, axis=0) 열방향 정렬

argsort()

정렬의 결과가 해당 index값

Categories: Python Basic

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x