numpy 合併陣列和切割陣列

2022-07-25 19:39:08 字數 1874 閱讀 1519

可以在不同的軸上堆積陣列:

>>> a = np.floor(10*np.random.random((2,2)))

>>>a

array([[ 8., 8.],

[ 0., 0.]])

>>> b = np.floor(10*np.random.random((2,2)))

>>>b

array([[ 1., 8.],

[ 0., 4.]])

>>>np.vstack((a,b))

array([[ 8., 8.],

[ 0., 0.],

[ 1., 8.],

[ 0., 4.]])

>>>np.hstack((a,b))

array([[ 8., 8., 1., 8.],

[ 0., 0., 0., 4.]])

注意:numpy還有乙個concatenate方法,既可以垂直拼接也可以水平拼接,是通過axis引數進行區分,其工作機制比較難以理解和記憶,建議檢視範例,對照使用:

>>> np.concatenate((a, b), axis=0)
array([[ 8.,  8.],

[ 0., 0.],

[ 1., 8.],

[ 0., 4.]])

>>> np.concatenate((a, b), axis=1)
array([[ 8.,  8.,  1.,  8.],

[ 0., 0., 0., 4.]])

>>>arr1 = np.array([1, 2, 3])

>>>arr2 = np.array([4, 5, 6])

>>> np.concatenate((arr1, arr2), axis=0)
array([1 2 3 4 5 6])

concatenate方法在合併的時候,兩個陣列必須處在同一維度,否則會報錯。axis引數可以賦值的數值個數取決於陣列的維度數。

使用hsplit,可以沿著陣列的水平軸拆分陣列,方法是指定要返回的相等形狀陣列的數目,或者指定在其後面進行拆分的列:

>>> a = np.floor(10*np.random.random((2,12)))

>>>a

array([[ 9., 5., 6., 3., 6., 8., 0., 7., 9., 7., 2., 7.],

[ 1., 4., 9., 2., 2., 1., 0., 6., 2., 2., 4., 0.]])

>>> np.hsplit(a,3) #

將資料均勻分割成3份

[array([[ 9., 5., 6., 3.],

[ 1., 4., 9., 2.]]), array([[ 6., 8., 0., 7.],

[ 2., 1., 0., 6.]]), array([[ 9., 7., 2., 7.],

[ 2., 2., 4., 0.]])]

>>> np.hsplit(a,(3,4)) #

在指定的列位置,分割陣列

[array([[ 9., 5., 6.],

[ 1., 4., 9.]]), array([[ 3.],

[ 2.]]), array([[ 6., 8., 0., 7., 9., 7., 2., 7.],

[ 2., 1., 0., 6., 2., 2., 4., 0.]])]

顯然有vsplit方法,對陣列進行垂直方向的分割;也有split方法綜合了兩個方法的功能,可以指定分割的軸。

使用方式與上面的一致。

Numpy 陣列合併

對於乙個array的合併,我們可以想到按行 按列等多種方式進行合併。import numpy as np a np.array 1 2,3 4,5 6 b np.array 6 5,4 3,2 1 print a print b print np.vstack a,b 沿著豎直方向將矩陣堆疊起來 c...

Python中numpy陣列的合併

python中numpy陣列的合併有很多方法,如 np.concatenate np.stack np.hstack np.vstack np.dstack 其中最泛用的是第乙個和第二個。第乙個可讀性好,比較靈活,但是佔記憶體大。第二個則沒有記憶體占用大的問題。parameters introduc...

numpy 陣列的合併和分割

匯入numpy import numpy as np數字的分割 np.vstack tupel 豎直合併 np.hstack tupel 水平合併 a np.array 1 2,3 b np.array 2 3,4 c np.vstack a,b c array 1,2,3 2,3,4 d np.h...