博客
关于我
NumPy 数组拼接方法-ChatGPT4o作答
阅读量:793 次
发布时间: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/

你可能感兴趣的文章
Notadd —— 基于 nest.js 的微服务开发框架
查看>>
Notepad ++ 安装与配置教程(非常详细)从零基础入门到精通,看完这一篇就够了
查看>>
Notepad++在线和离线安装JSON格式化插件
查看>>
notepad++最详情汇总
查看>>
notepad如何自动对齐_notepad++怎么自动排版
查看>>
Notification 使用详解(很全
查看>>
NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()
查看>>
Now trying to drop the old temporary tablespace, the session hangs.
查看>>
nowcoder—Beauty of Trees
查看>>
np.arange()和np.linspace()绘制logistic回归图像时得到不同的结果?
查看>>
np.power的使用
查看>>
NPM 2FA双重认证的设置方法
查看>>
npm build报错Cannot find module ‘webpack/lib/rules/BasicEffectRulePlugin‘解决方法
查看>>
npm build报错Cannot find module ‘webpack‘解决方法
查看>>
npm ERR! ERESOLVE could not resolve报错
查看>>
npm ERR! Unexpected end of JSON input while parsing near ‘...“:“^1.2.0“,“vue-html-‘ npm ERR! A comp
查看>>
npm error Missing script: “server“npm errornpm error Did you mean this?npm error npm run serve
查看>>
npm error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。要解决此问题,1) 安装
查看>>
npm install CERT_HAS_EXPIRED解决方法
查看>>
npm install digital envelope routines::unsupported解决方法
查看>>