Python NumPy数组组合与分割详解:hstack、vstack、dsplit等用法

Nora
Nora
发布时间:2026-10-13| 5人浏览过
原创

本文详细介绍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数组组合与分割的实例介绍完毕,希望能为读者提供参考,并欢迎大家支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。