1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 | # -*- coding: utf-8 -*- """Day 01_numpy.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1SUG0t9VLv_ZUDFZ2JFMXvVI8s58OrUui # 배열 : 모든 원소가 같은 자료형 ####ndarray : n차원 배열, 축이 n개인 배열 ####벡터화 연산 : 벡터 단위로 연산 ->요소 개별 반복 수행이 아니라 벡터 단위로 수행. """ import numpy as np #파이썬에서 배열 생성 ( 리스트와는 다르다 ) arr = np.array([ 1, 2, 3 ]) arr, type(arr) ans = [] for i in arr: ans.append( i * 2 ) ans 2 * arr # 리스트에서의 곱셈 연산은 벡터화연산이 아니라 그냥 리스트를 두배로 늘린다. li = [ 1, 2, 3, ] li * 2 a = np.array([1,2]) b = np.array([10,20]) #요소 끼리의 곱셈 3 * a + b li = np.array([ 1, 2, 3, ]) li == 2 c = np.array([[1,2,3],[4,5,6]]) #행의 갯수 len(c) #열의 갯수 len([0]) # 배열의 차원, 크기 c.ndim, # ndimension => 차원 확인 2차원. c.shape # 배열 크기 확인 a3 = np.array([ 1, 2, 3, 4, 5 ]) a3[4], a3[-1] a3 = np.array([[ 1, 2, 3],[ 4, 5, 6 ]]) a3[0,1] , a3[0][1], a3[-1][-1] ### 슬라이싱 a3 = np.array([[ 1, 2, 3],[ 4, 5, 6 ]]) a3[1][1:3] , a3[1, 1: ] ### 0 초기화 a = np.zeros((5,2), dtype='i') ### 초기화 안하는 경우 b = np.empty((5,2)) a = np.arange(10) ### 스탭 지정 어레인지 np.arange(10, 50 , 3) ## 선형공간 linear space np.linspace(0, 100, 5) # 0~100까지 5개의 구간으로 분할하는 함수. ## 로그 공간 , 0.1부터 1까지를 10개의 구간으로 분할 밑이 10인 로그 np.logspace(0.1, 1, 10) ## 전치 행렬 a.shape , a.T.shape # 쉐잎변경 b = np.arange(12) ## 행이 4개니까 열은 알아서 계산 하도록 -1 주기 b.reshape(4,-1) ## 다 차원을 1차원으로 ravel() 레벨링 => 평평하게 하다. b.ravel() # 또는 b.flatten() ## 벡터형태 x = np.arange(5) x ## 1행 5열 행렬 형태 x = x.reshape(1,5) ## 5핼 1열 행렬 형태 x = x.reshape(5,1) ## 차원을 증가 시킬때 사용. x[:, np.newaxis] """####Stack""" a1 = np.ones((2,3), dtype='i') a2 = np.zeros((2,3), dtype='i') ## 가로로 연결 np.hstack([a1, a2]) ## 세로로 연결 -> 열의 수가 같을때 사용. np.vstack([a1, a2]) x = np.arange(1,10001) x2 = np.arange(10001,20001) ## x와 같은 행,열로 만들고 0으로 초기화 x3 = np.zeros_like(x) ## 실행시간 측정 # %%time for i in range(10000): x3[i] = x[i]+x2[i] x3[ : 10] ## 벡터화 연산 실행속도 비교. # %%time x3 = x + x2 ## e^1 np.exp(1) # 최소값에 해당하는 인덱스를 리턴 x = np.array( [ 4, 5, 6, 7 ]) x.argmin() , x.argmax() x = np.array([ [1,2], [3, 4], [5, 6] ]) x x.sum() ## 열 단위로 계산 x.sum(axis = 0) ## 행 단위로 계산 x.sum(axis = 1 ) ## 정렬 각 행에 대해서 오름차순 정렬 x = np.array([ [11,2], [23, 14], [5, 26] ]) print(np.sort(x)) print("*" * 50) ## 각 열에 대해서 오름차순 정렬 print(np.sort(x, axis = 0 )) ## inplace 함수들과 copy함수 차이를 구분할것.( 그 자리에서 배열의 값이 바뀌는 함수 ) x = np.array([40,30,10,20]) ## [40,30,10,20] -> [ 10, 20, 30, 40 ] 이 보통 오름차순 ## argsort는 원래 배열에서 몇번째 인덱스에 있었는지만 리턴한다. 기본 오름차순. np.argsort(x) x | cs |
'딥러닝 모델 설계 > Machine Learning' 카테고리의 다른 글
Day 4. binomializing [ OneHotEncoding ] (0) | 2019.07.06 |
---|---|
Day 03. Scaler (0) | 2019.07.03 |
Day 03. Replacement (0) | 2019.07.03 |
Day 02. Pandas Review - 2 (0) | 2019.07.02 |
Day 02. Pandas Review - 1 (0) | 2019.07.02 |