Python 在機器學習時總結關於索引的乙個小細節

2021-09-28 11:15:22 字數 2724 閱讀 7044

1.通過argsort函式發現的乙個細節:

import numpy as

*data = array([[

2,4,

3,4]

,[2,

0,1,

2],[

2,2,

2,2]

])datasort = data[:,

1].argsort(0)

data1 = data[data[:,

1].argsort()]

data2 = data[data[:,

1].argsort(0)

]print

(datasort)

#argsort函式排序後的對應的索引

輸出結果:[1

20]print

(data[array([1

,2,0

])])

#索引可以是陣列,通過下面的nonzero函式也可以看到

輸出結果:[[

2012

][22

22][

2434

]]print([

1,2,

0])#索引是列表,返回錯誤

print

(data2)

#data1的結果也是如此

輸出結果:[[

2012

][22

22][

2434

]]

2.通過nonzero()函式發現的:

x = np.array([[

2,3,

4,0]

,#x是陣列形式[2

,0,1

,2],

[1,1

,7,2

]])y = np.mat(x)

#y是x的矩陣形式

print

(np.nonzero(x[:,

1]<=2)

)輸出結果:#由於陣列切片的有時會降維,axis=0方向只有乙個元素

(array([1

,2], dtype=int32),)

print

(np.nonzero(y[:,

1]<=2)

)輸出結果:#矩陣切片永遠是二維,axis=0方向有2個元素

(array([1

,2], dtype=int32)

, array([0

,0], dtype=int32)

)繼續看

print

(np.nonzero(x[:,

1]<=2)

[0])

輸出結果:#如果索引為1,則會:indexerror: tuple index out of range[1

2]print

(np.nonzero(y[:,

1]<=2)

[1])

輸出結果:[0

0]print

(np.shape(x)

):(3,4)

l= x[:,

1]o= np.shape(l)

print

(o)輸出結果:(3,)

print

(x[:,1

])#降維print

(y[:,1

])#不降維

print

(x[:,1

]<=

0.5)

#降維輸出結果:

[false

true

false

]print

(y[:,1

]<=

0.5)

#不降維

輸出結果:[[

false][

true][

false

]]

因此:!!!!!! 在用nonzero()函式切片時,注意是陣列切片,還是矩陣切片,如果陣列切片,索引可能發生了降維,而矩陣不會,索引根據維度選擇數字索引 如:
print

(x[np.nonzero(x[:,

1]<=2)

[0],

:])#

輸出結果:#對於陣列,這裡[0]要不要都一樣,因為這裡返回的切片陣列只有一維array([1,2])[[

2012

][11

72]]

print

(x[np.nonzero(x[:,

1]<=2)

])輸出結果:[[

2012

][11

72]]

而對於矩陣:

print

(y[np.nonzero(y[:,

1]<=2)

[0],

:])#矩陣不會,為了彌補維度的降低,axis=0的第二個元素設為0

輸出結果:[[

2012

][11

72]]

print

(y[np.nonzero(y[:,

1]<=2)

])#此時內部的切片為陣列array([1,2],[0,0])

(所以先時第乙個陣列[1,

2]對應第一維:[[2

012]

[117

2]];再是[0,

0]對應第二維:[[2

1]],注意哦這裡仍然沒有降維,因為y是矩陣!!!!)

輸出結果: [[

21]]

陣列切片還得好好學>-<

機器學習先關概念

訓練樣本的標記資訊是未知的,目標是為了揭露訓練樣本的內在屬性,結構和資訊,為進一步的資料探勘提供基礎。1.1 聚類 聚類通常是指,對於未標記訓練樣本,根據樣本的內在相似性,將樣本劃分為若干個不相交子集的學習演算法。聚類涉及到資料點的分組。給定一組資料點,我們可以使用聚類演算法將每個資料點劃分為乙個特...

python機器 python機器學習

熱詞系列 打卡 mark一下,以後看 每天打卡學習 1 python 基礎 bv1lt4y1u7un 2 python 高階 bv1jz411b7dh 3 python 資料庫 bv1pg4y1a7a7 4 python gui與坦克大戰 bv1je411f72o 5 python numpy bv...

機器學習總結

1.常用的機器學習演算法包括 監督學習 半監督學習 無監督學習 增強學習 遺傳演算法 監督學習 就是人為的設定規則,告訴機械人該執行怎麼樣的行動。無監督學習就是不告訴機械人具體的實施辦法,只給定規則,讓機械人過程當中自己學習總結經驗 半監督學習就是結合少標籤的樣本和大量無標籤的樣本進行學習和分類 強...