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([ 123 ])
 
arr, type(arr)
 
ans = []
for i in arr:
    ans.append( i * 2 )
    
ans
 
2 * arr
 
# 리스트에서의 곱셈 연산은 벡터화연산이 아니라 그냥 리스트를 두배로 늘린다.
li = [ 123, ]
li * 2
 
= np.array([1,2])
= np.array([10,20])
 
#요소 끼리의 곱셈
3 * a + b
 
li = np.array([ 123, ]) 
li == 2
 
= np.array([[1,2,3],[4,5,6]])
 
#행의 갯수
len(c)
 
#열의 갯수
len([0])
 
# 배열의 차원, 크기
c.ndim, # ndimension => 차원 확인 2차원.
 
c.shape # 배열 크기 확인
 
a3 = np.array([ 12345 ])
a3[4], a3[-1]
 
a3 = np.array([[ 123],[ 456 ]])
 
a3[0,1] , a3[0][1], a3[-1][-1]
 
### 슬라이싱
a3 = np.array([[ 123],[ 456 ]])
 
a3[1][1:3] , a3[11: ]
 
### 0 초기화
= np.zeros((5,2), dtype='i')
 
### 초기화 안하는 경우
= np.empty((5,2))
 
= np.arange(10)
 
### 스탭 지정 어레인지
np.arange(1050 , 3)
 
## 선형공간 linear space
np.linspace(01005)  # 0~100까지 5개의 구간으로 분할하는 함수.
 
## 로그 공간 , 0.1부터 1까지를 10개의 구간으로 분할 밑이 10인 로그
np.logspace(0.1110)
 
## 전치 행렬
a.shape , a.T.shape
 
# 쉐잎변경
= np.arange(12
 
## 행이 4개니까 열은 알아서 계산 하도록 -1 주기
b.reshape(4,-1)
 
## 다 차원을 1차원으로  ravel() 레벨링 => 평평하게 하다.
b.ravel()  # 또는
b.flatten()
 
## 벡터형태
= np.arange(5)
x
 
## 1행 5열 행렬 형태
= x.reshape(1,5)
 
## 5핼 1열 행렬 형태
= 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)
 
# 최소값에 해당하는 인덱스를 리턴
= np.array( [ 4567 ])
x.argmin() , x.argmax()
 
= np.array([ [1,2], [34], [56] ])
x
 
x.sum()
 
## 열 단위로 계산
x.sum(axis = 0)
 
## 행 단위로 계산
x.sum(axis = 1 )
 
## 정렬 각 행에 대해서 오름차순 정렬 
= np.array([ [11,2], [2314], [526] ])
print(np.sort(x))
print("*" * 50)
 
## 각 열에 대해서 오름차순 정렬
print(np.sort(x, axis = 0 ))
 
## inplace 함수들과 copy함수 차이를 구분할것.( 그 자리에서 배열의 값이 바뀌는 함수 )
= 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

+ Recent posts