Numpy (NUMerical PYthon)
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
List | Array | |
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값