1. 程式人生 > >python numpy--陣列的組合和分割

python numpy--陣列的組合和分割

陣列的組合主要有: 1.水平組合:np.hstack(arr1,arr2) 或 concatenate(arr1,arr2,axis=1) 2.垂直組合:np.vstack(arr1,arr2) 或 concatenate(arr1,arr2,axis=0) 3.深度組合:np.dstack(arr1,arr2) 4.列組合:np.column_stack(arr1,arr2) 5.行組合:np.row_stack(arr1,arr2)

陣列的分割主要有: 1.水平分割:np.split(arr,n,axis=1) 或 np.hsplit(arr,n) 2.垂直分割:np.split(arr,n,axis=0) 或 np.vsplit(arr,n) 3.深度分割:np.dsplit(arr,n)

接下來一一舉例

一、陣列的組合

1.水平組合

語法: np.hstack(arr1,arr2) concatenate(arr1,arr2,axis=1) 水平方向上直接拼接起來

# 準備兩個陣列
m=np.arange(9).reshape(3,3)
doubleM=m*2

m: 在這裡插入圖片描述 doubleM: 在這裡插入圖片描述

#hstack()
np.hstack((m,doubleM)) 
# concatenate()
np.concatenate((m,doubleM),axis=1)

在這裡插入圖片描述

2.垂直組合

語法: np.vstack(arr1,arr2) concatenate(arr1,arr2,axis=0) 將第二個陣列拼接在第一個陣列的垂直方向上。

還是用剛剛的m 和doubleM這兩個陣列。

# vstack()
np.vstack((m,doubleM))
# concatenate()
np.concatenate((m,doubleM),axis=0)

在這裡插入圖片描述

3.深度組合

語法:np.dstack(arr1,arr2) 就是將一系列陣列沿著縱軸(深度)方向進行層疊組合。

還是用剛剛的m和doubleM兩個陣列。

np.dstack((m,doubleM))

在這裡插入圖片描述 注意:(1)新的資料的維度是原資料行列以及個數相關。 (2)維度不同的兩個陣列不能進行組合

4.列組合

語法:np.column_stack(arr1,arr2) column_stack函式對於一維陣列是深度組合; 對多維陣列就是與hstack的效果一樣,直接水平方向拼接起來

(1)兩個一維陣列進行列組合

m1=np.arange(3)
print(m1)
np.column_stack((m1,m1*2))

[0 1 2]

array([[0, 0], [1, 2], [2, 4]])

(2)一維陣列與多維陣列進行組合

將一維陣列的每一個數字分配到多維陣列的每一列中去,因此,一維陣列的數字個數一定要與多維陣列的行相同才能夠進行組合。 m1:[0 1 2] m: 在這裡插入圖片描述

np.column_stack((m1,m))

在這裡插入圖片描述

(3)多維陣列與多維陣列進行列組合

可以看出來是直接進行水平方向的組合的

np.column_stack((m,doubleM))

在這裡插入圖片描述

5.行組合

語法:np.row_stack(arr1,arr2) 對於一維陣列來說,無論幾個一維陣列,直接疊起來組成二維陣列; 對於多維陣列來說,就是垂直方向上的組合(vstack)

(1)兩個一維陣列進行行組合

np.row_stack((m,doubleM))

在這裡插入圖片描述

(2)多維陣列進行行組合

注意一定要相同維度的多維陣列才能進行行組合!!!

二、陣列的分割

1.水平分割

是在水平方向上進行分割,所以是豎著劃一刀的。 語法: np.split(arr,n,axis=1) np.hsplit()

arr1=np.arange(16).reshape(4,4)
print(arr1)
np.split(arr1,2,axis=1)
# np.hsplit(arr1,2)

在這裡插入圖片描述 注意:分割的分數要可以整出的才行

2.垂直分割

沿著垂直方向上進行分割,因此是分出來是行 語法: np.split(arr,n,axis=0) np.vsplit(arr)

arr=np.arange(9).reshape(3,3)
arr

在這裡插入圖片描述

np.split(arr,3,axis=0)
np.vsplit(arr,3)

在這裡插入圖片描述

3.深度分割

注意:深度分割只能分割3個維度以上的 語法:語法:dsplit(arr,n)

arr1=np.arange(8).reshape(2,2,2)
arr1

在這裡插入圖片描述

np.dsplit(arr1,2)

在這裡插入圖片描述