博客
关于我
NumPy 数组拼接方法-ChatGPT4o作答
阅读量:792 次
发布时间:2023-02-17

本文共 2692 字,大约阅读时间需要 8 分钟。

NumPy 数组拼接详解

NumPy 提供了多种数组拼接方法,能够满足不同场景的需求。本文将从基本概念、详细解析、注意事项以及场景选择四个方面对 NumPy 数组拼接进行全面讲解。


1. 基本概念

数组拼接是指将多个数组组合成一个更大的数组。NumPy 提供了多种拼接方式,主要包括沿现有维度拼接(如行方向或列方向)和增加新维度后拼接(如堆叠到新轴上)。以下是常见的数组拼接函数及其核心区别:

函数名 描述 新增新轴?
concatenate 沿指定轴拼接数组,无新增维度
vstack 垂直堆叠,相当于 axis=0
hstack 水平堆叠,相当于 axis=1
stack 沿新轴拼接数组,增加新维度
dstack 沿深度(第三维)堆叠
append 追加元素到数组,功能类似 concatenate
column_stack 将 1D 数组作为列拼接到 2D 数组中
row_stack 将 1D 数组作为行拼接到 2D 数组中

2. 每种方法的详细解析

2.1 concatenate()

concatenate 是最通用的拼接方法,适合将多个数组沿现有轴拼接。其核心功能是将多个数组合并成一个更大的数组,且无需新增维度。

语法

np.concatenate(arrays, axis=0)

示例

import numpy as np# 示例 1:垂直拼接(默认 axis=0)a = np.array([[1, 2], [3, 4]])b = np.array([[5, 6]])result = np.concatenate((a, b), axis=0)print(result)

输出:

[[1 2] [3 4] [5 6]]

示例 2:水平拼接(axis=1)

a = np.array([[1, 2], [3, 4]])b = np.array([[5], [6]])result = np.concatenate((a, b), axis=1)print(result)

输出:```plaintext[[1 2 5] [3 4 6]]

注意事项

  • 拼接的数组在非拼接轴上的形状必须一致。例如:
    a = np.array([[1, 2], [3, 4]])b = np.array([[5, 6, 7]])  # 错误:形状不匹配

2.2 vstack() 和 hstack()

vstack 和 hstack 是 concatenate 的简化版本,分别用于垂直和水平堆叠。

vstack()(垂直堆叠)

np.vstack(arrays)

将多个 1D 数组垂直堆叠成一个 2D 数组。

示例:

a = np.array([1, 2])b = np.array([3, 4])result = np.vstack((a, b))print(result)

输出:

[[1 2] [3 4]]

hstack()(水平堆叠)

np.hstack(arrays)

将多个 1D 数组水平堆叠成一个 2D 数组。

示例:

a = np.array([[1], [2]])b = np.array([[3], [4]])result = np.hstack((a, b))print(result)

输出:

[[1 3] [2 4]]

2.3 stack()

stack 用于沿新轴堆叠多个数组,适合增加维度后拼接。

语法

np.stack(arrays, axis=0)

示例

a = np.array([1, 2])b = np.array([3, 4])# 沿新轴堆叠result = np.stack((a, b), axis=0)print(result)

输出:

[[1 2] [3 4]]

如果 axis=1:

result = np.stack((a, b), axis=1)print(result)

输出:

[[1 3] [2 4]]

2.4 dstack()

dstack 是专门用于沿深度(第三维)堆叠的函数。

示例:

a = np.array([[1, 2], [3, 4]])b = np.array([[5, 6], [7, 8]])result = np.dstack((a, b))print(result)

输出:

[[[1 5]  [2 6]] [[3 7]  [4 8]]]

2.5 append()

append 方法用于将元素追加到数组,功能类似于 concatenate,但只适用于单个元素的追加。

示例:

a = np.array([1, 2, 3])b = np.array([4, 5, 6])# 追加元素result = np.append(a, b)print(result)

输出:

[1 2 3 4 5 6]

2.6 column_stack() 和 row_stack()

column_stack()

将 1D 数组作为列拼接到 2D 数组中。

示例:

a = np.array([1, 2, 3])b = np.array([4, 5, 6])result = np.column_stack((a, b))print(result)

输出:

[[1 4] [2 5] [3 6]]

row_stack()

将 1D 数组作为行拼接到 2D 数组中。

示例:

a = np.array([1, 2, 3])b = np.array([4, 5, 6])result = np.row_stack((a, b))print(result)

输出:

[[1 2 3] [4 5 6]]

3. 注意事项

1. 形状兼容性

  • 使用 concatenate 时,拼接的数组在非拼接轴上的形状必须相同。
  • 使用 stack 时,所有数组的形状必须完全一致。

2. 多维拼接

  • 高维数组拼接时,明确指定 axis 避免混淆。

3. 性能考虑

  • 对于大量数组拼接,优先选择 concatenate 和 stack,它们更高效。

4. 场景选择

需求 推荐方法
沿行或列拼接 concatenate
垂直堆叠 vstack
水平堆叠 hstack
增加新维度拼接 stack
拼接深度方向(三维数据) dstack
简单追加元素 append
1D 数组拼接为列或行 column_stack 或 row_stack

通过合理选择拼接方法,可以高效地完成数组操作,充分利用 NumPy 的强大功能。

转载地址:http://ogjfk.baihongyu.com/

你可能感兴趣的文章
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>
NIFI集群_内存溢出_CPU占用100%修复_GC overhead limit exceeded_NIFI: out of memory error ---大数据之Nifi工作笔记0017
查看>>
NIFI集群_队列Queue中数据无法清空_清除队列数据报错_无法删除queue_解决_集群中机器交替重启删除---大数据之Nifi工作笔记0061
查看>>
NIH发布包含10600张CT图像数据库 为AI算法测试铺路
查看>>
Nim教程【十二】
查看>>
Nim游戏
查看>>
NIO ByteBuffer实现原理
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NIO基于UDP协议的网络编程
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
Nitrux 3.8 发布!性能全面提升,带来非凡体验
查看>>