Python NumPy数组组合与分割详解:hstack、vstack、dsplit等用法
本文详细介绍Python NumPy库中数组的组合与分割方法。涵盖水平组合hstack、垂直组合vstack、深度组合dstack及行列堆叠函数,并讲解水平分割hsplit、垂直分割vsplit和深度分割dsplit的使用语法与注意事项。通过具体代码示例展示不同维度数组的操作结果,帮助开发者掌握多维数据处理技巧。
NumPy数组组合与分割概述
在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个维度以上的数组。
语法:np.dsplit(arr, n)
arr1=np.arange(8).reshape(2, 2, 2) arr1

np.dsplit(arr1, 2)

以上关于Python NumPy数组组合与分割的实例介绍完毕,希望能为读者提供参考,并欢迎大家支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













