티스토리 뷰
복습¶
- Iris 데이터에서 X와 y를 분리하시오
- Iris 에서 세가지 품종 데이터를 분리하시오.
- Iris 에서 PetalLength와 PetalWidth 두 속성을 이용하여 산점도를 그리시오. (plt.scatter 함수 사용)
In [3]:
import numpy as np
In [10]:
f = open('iris.csv')
line = f.readline()
features = line.strip().split(',')[:4]
labels = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']
data=[]
for line in f:
I = line.strip().split(',')
I[:4] = [float(i) for i in I[:4]]
I[4] = labels.index(I[4])
data.append(I)
f.close()
iris = np.array(data)
In [11]:
X = iris[:,:4]
y = iris[:,4]
In [13]:
setosa = X[y==0]
versicolor = X[y==1]
virginica = X[y==2]
In [14]:
setosa.shape, versicolor.shape, virginica.shape
Out[14]:
In [17]:
s_len = X[:,0]
s_wid = X[:,1]
p_len = X[:,2]
p_wid = X[:,3]
In [20]:
import matplotlib.pyplot as plt
In [27]:
plt.scatter(p_len, p_wid, c=y)
plt.title(features[2]+' vs '+features[3])
plt.xlabel(features[2])
plt.ylabel(features[3])
Out[27]:
Numpy 어레이 생성하기¶
- np.array()
- np.zeros()
- np.ones()
- np.eye() (대각행렬)
- np.arange() 순서대로 나열(인덱스와 관련 높다.)
In [30]:
import numpy as np
import matplotlib.pyplot as plt
In [131]:
a = np.zeros([5,5])
a
Out[131]:
In [132]:
np.ones([5,5])
Out[132]:
In [133]:
I = [1,1,1,1,1]
np.array(I)
Out[133]:
In [135]:
l = [[1,1,1,1,1], [2,2,2,2,2], [3,3,3,3,3]]
np.array(l)
Out[135]:
In [136]:
np.zeros([5,5]) + 5
Out[136]:
In [137]:
np.ones([5,5]) * 5
Out[137]:
In [138]:
a = np.eye(5)
a
Out[138]:
In [139]:
a[ [1,1,2] ]
Out[139]:
In [140]:
l = [1,1,2,0,4]
a[l]
Out[140]:
In [141]:
np.arange(10)
Out[141]:
In [142]:
np.arange(100,200,5)
Out[142]:
In [143]:
a = np.arange(100)
a
Out[143]:
In [144]:
a.reshape(10,10)
Out[144]:
In [145]:
np.arange(100).reshape(10,10)
Out[145]:
In [146]:
a.reshape(20,-1)
Out[146]:
In [147]:
a = np.arange(100).reshape(10,10)
a[:3]
Out[147]:
In [148]:
a[:,:3]
Out[148]:
In [149]:
a + 100
Out[149]:
In [150]:
a % 10
Out[150]:
In [151]:
a // 10
Out[151]:
In [33]:
# 데이터의 편향성을 없애기 위해서 행렬을 사용
# ex) ['서울', '광주', '부산'] =[0,2,1]로 두면 숫자간 순서가 생겨 문제가 생길 수 있다.
# 그래서 [[1,0,0],[0,0,1],[0,1,0]]으로 두면 편향성을 없앨 수 있다.
# 나 너 좋다 음식 맛있다 요리 잘한다.
# 1 0 1 0 0 1 1
In [47]:
a= np.arange(100).reshape(10,-1)
np.sum(a) # 합
Out[47]:
In [48]:
np.mean(a) #평균
Out[48]:
In [58]:
np.std(a) #표준편차
Out[58]:
In [50]:
a = np.zeros([5,5])
a
Out[50]:
In [52]:
a[0,0]=1
# (0,0)을 지정하여 값을 바꾼다. 테스트 목적. 데이터 자료에는 함부러 사용하지 말 것.
a
Out[52]:
In [53]:
a[0]=1
# 1번째 행을 모두 1로 바꾼다.
a
Out[53]:
In [56]:
a[:,0]=2
# 1번째 열을 모두 2로 바꾼다.
a
Out[56]:
In [69]:
a = np.zeros([5,5])
a[[0,-1]] = 3
a[:, [0,-1]] = 7
a
Out[69]:
In [70]:
a==0
Out[70]:
In [71]:
a[a==0] = -1
a
Out[71]:
In [73]:
a[1:-1,1:-1]=99
a
Out[73]:
In [74]:
a = np.arange(12).reshape(4,3)
a
Out[74]:
In [75]:
a<5
Out[75]:
자기 자신에 부등식을 넣으면 자기 자신에서 해당하는 항목만 뽑아낼 수 있다.¶
In [77]:
a[a<5]
Out[77]:
In [78]:
a[a%2==0]
Out[78]:
In [79]:
a[a!=5]
Out[79]:
In [80]:
a[a//10==1]
Out[80]:
이상치 같은경우는 이 방법을 이용하여 경계값으로 바꿔줄수 있다.
In [83]:
a[(a<2) | (a>9)] = 0 # array끼리 '|' : or , '&' : and
a
Out[83]:
그래프 맛보기¶
In [103]:
a = np.zeros([10,10]) #numpy는 if for문을 사용하는것보다 index를 사용한다.
a[0]=1
a[-1]=1
a[:,0]=1
a[:,-1]=1
'''
a[[0,-1]]=1
a[:,[0,-1]]=1
'''
a
Out[103]:
In [104]:
for row in range(10):
for col in range(10):
if (row==0 or row==0): a[row,col]=1
if (col==0 or col==0): a[row,col]=1
a
Out[104]:
In [105]:
plt.imshow(a) # 2차원 행렬을 그림으로 표현하는 함수
plt.colorbar()
Out[105]:
In [106]:
plt.imshow(a, cmap='gray_r') # cmap을 이용해 색을 바꿀 수 있다
plt.colorbar()
Out[106]:
matplotlib cmap(https://matplotlib.org/examples/color/colormaps_reference.html)
In [111]:
plt.imshow(np.arange(10000).reshape(100,100))
plt.colorbar()
Out[111]:
In [113]:
a = plt.imread('lucy.jpg') # 사진파일을 numpy가 array로 바꿔준다.
print(a.shape)
plt.imshow(a)
plt.title('jimin-beaty')
Out[113]:
In [116]:
a # (367, 560, 3)로 3차원(행,열,채널(RGB))이지만 numpy array로 불러온다.
Out[116]:
In [117]:
a[:,:,0]
Out[117]:
In [126]:
plt.imshow(a[:,:,0], cmap='Reds')
Out[126]:
In [127]:
plt.imshow(a[:,:,1], cmap='Greens')
Out[127]:
In [128]:
plt.imshow(a[:,:,2], cmap='Blues')
Out[128]:
R+G+B가 합쳐져 사진이 된다.
'beginner > 파이썬 기초' 카테고리의 다른 글
| NumPy_랜덤-2 (0) | 2019.02.13 |
|---|---|
| NumPy_랜덤-1 (0) | 2019.02.12 |
| 함수와 모듈 (0) | 2019.02.11 |
| NumPy_잘라내기 (0) | 2019.02.11 |
| NumPy_기본 (0) | 2019.02.08 |