numpy array分割 老魚學numpy

2022-02-10 05:44:02 字數 2867 閱讀 3217

有合併,就有分割。

本節主要講述如何通過numpy對陣列進行橫向/縱向分割。

首先建立乙個6行4列的陣列,然後我們對此陣列按照橫向進行切割,分成3塊,這樣每塊應該有2行,見例子:

import numpy as np

a = np.arange(24).reshape(6, 4)

print("a=")

print(a)

print(np.split(a, 3, axis=0))

輸出為:

a=

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]

[16 17 18 19]

[20 21 22 23]]

[array([[0, 1, 2, 3],

[4, 5, 6, 7]]),

array([[ 8, 9, 10, 11],

[12, 13, 14, 15]]),

array([[16, 17, 18, 19],

[20, 21, 22, 23]])]

上面的分割中把陣列分成了等分的3份,如果我們不想分割成等分的,可以寫成如下的方式:

import numpy as np

a = np.arange(24).reshape(6, 4)

print("a=")

print(a)

print(np.split(a, [3, 5], axis=0))

輸出為:

a=

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]

[16 17 18 19]

[20 21 22 23]]

[array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]]),

array([[12, 13, 14, 15],

[16, 17, 18, 19]]),

array([[20, 21, 22, 23]])]

這裡[3, 5]進行分割的意思是在第3行和第5行出進行切割。

同理,我們如果把axis設定為1,則可以按照列進行分割,例如,我們把上面的6行4列的資料分割成2列:

import numpy as np

a = np.arange(24).reshape(6, 4)

print("a=")

print(a)

print(np.split(a, 2, axis=1))

輸出:

a=

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]

[16 17 18 19]

[20 21 22 23]]

[array([[ 0, 1],

[ 4, 5],

[ 8, 9],

[12, 13],

[16, 17],

[20, 21]]), array([[ 2, 3],

[ 6, 7],

[10, 11],

[14, 15],

[18, 19],

[22, 23]])]

我們也可以用單獨的水平或垂直分割函式對陣列進行分割。

例如把陣列水平分割成兩列:

import numpy as np

a = np.arange(24).reshape(6, 4)

print("a=")

print(a)

print(np.hsplit(a, 2))

輸出:

a=

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]

[16 17 18 19]

[20 21 22 23]]

[array([[ 0, 1],

[ 4, 5],

[ 8, 9],

[12, 13],

[16, 17],

[20, 21]]), array([[ 2, 3],

[ 6, 7],

[10, 11],

[14, 15],

[18, 19],

[22, 23]])]

例如:

import numpy as np

a = np.arange(24).reshape(6, 4)

print("a=")

print(a)

print(np.vsplit(a, 2))

輸出為:

a=

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]

[12 13 14 15]

[16 17 18 19]

[20 21 22 23]]

[array([[ 0, 1, 2, 3],

[ 4, 5, 6, 7],

[ 8, 9, 10, 11]]),

array([[12, 13, 14, 15],

[16, 17, 18, 19],

[20, 21, 22, 23]])]

numpy array的複製 老魚學numpy

看例子 a np.array 0,1,2,3 b a a 0 5 print b b 判斷a和b是否是同樣的位址 print b is a 執行結果 b 5 1 2 3 true上面的例子中,我們改變了a的值,但列印出來b中的值也被修改了,原因是a和b指向相同的物件。如果我們想要解決修改了a的值不會...

sklearn儲存模型 老魚學sklearn

訓練好了乙個model 以後總需要儲存和再次 所以儲存和讀取我們的sklearn model也是同樣重要的一步。比如,我們根據 樣本資料訓練了一下房價模型,當使用者輸入自己的房子後,我們就需要根據訓練好的房價模型來 使用者房子的 這樣就需要在訓練模型後把模型儲存起來,在使用模型時把模型讀取出來對輸入...

sklearn交叉驗證 老魚學sklearn

交叉驗證 cross validation 有時亦稱迴圈估計,是一種統計學上將資料樣本切割成較小子集的實用方法。於是可以先在乙個子集上做分析,而其它子集則用來做後續對此分析的確認及驗證。一開始的子集被稱為訓練集。而其它的子集則被稱為驗證集或測試集。交叉驗證是一種評估統計分析 機器學習演算法對獨立於訓...