1 問題描述
- 將數據array([6, 9, 6, 1, 1, 2, 8, 7, 3, 5, 6, 3, 5, 3, 5, 8, 8, 2, 8, 1, 7, 8,7, 2, 1, 2 , 9, 9, 4, 9]) 轉化爲矩陣
- 將第三列中,小於等於3的修改爲0、大於3且小於等於6的修改爲1、大於6的修改爲2
-
假設這是10條樣本數據,前兩列是樣本的兩個特徵,第3列是樣本的分類標記,請分離出樣本
的特徵和分類 標記,分別存放在兩個變量中,用 X_train 存放樣本特徵(紅色部份), y_train
存放分類標記(綠色部份)
- 用 numpy 的比較運算,通過 y_train 中的數據,分離出 X_train 中的 3 個分類
2 解題提示
- 通過 reshape來對arry進行維度的轉化
- 注意二維數組在取某一列數據是的格式
- 通過標識來對數據集進行分類
3 評分標準
共計 25 分,要求一,三,五各5分,要求二10分。
4 要點解析
import numpy
# 一維數組
arr = numpy.arange(16)
print(arr)
# 獲取單個元素 -- 通過下標
data = arr[-1]
print(data)
# 獲取多個元素 --通過切片,不包含結束位置
data = arr[4:13]
print(data)
# 使用下標獲取多個元素,需要注意:需要多個下標組成一個元素
data= arr[[4,5,6,7,9]]
print(data)
# 二維數組
arr = numpy.arange(16).reshape(4,4)
print(arr)
# 獲取第一行元素
data = arr[0]
print(data)
# 獲取第一列元素
data = arr[:,0]
print(data)
# 獲取前兩行,前兩列
data = arr[:2,:2]
print(data)
# 獲取0 2 行的前兩列
data = arr[[0,2],0:2:1]
print(data)
# 獲取1 2行的1 2列元素
data = arr[[1,2],1:3]
print(data)
5 代碼實現
#%%
import numpy as np
#%%
# 隨機數種子
np.random.seed(1)
# 生成隨機的10行3列數組
X=np.random.randint(1,10,size=(10,3))
#%%
X
#%%
a = X[:,2]
a
#%% md
## 將第三列中按照要求進行轉化
#%%
a[a<=3]=0
a
#%%
a[(a>3) & (a<=6)] = 1
a
#%%
a[a>6]=2
a
#%%
# 將轉化之後 與 X進行結合
X[:,2]=a
X
#%%
X_train = X[:,:2]
Y_train = X[:,2]
#%%
X_train
#%%
Y_train
#%% md
## 進行分類
#%%
# 分類爲0的樣本
X_train[Y_train==0]
#%%
# 分類爲1的樣本
X_train[Y_train==1]
#%%
# 分類爲2的樣本
X_train[Y_train==2]
#%%