【Numpy】np.stack 和 np.concatenate 的区别

以下是一个简单的示例,通过形象化地解释 np.stacknp.concatenate 的区别,方便用于博客发布。


理解 np.stacknp.concatenate 的区别

在 Numpy 中,np.stacknp.concatenate 是用于合并数组的两种常见方法,它们的关键区别在于:

  • np.stack:创建一个新的维度,将数组堆叠在一起。
  • np.concatenate:沿着现有的维度拼接数组,不会新增维度。

示例数据

我们以两个形状相同的一维数组为例:

import numpy as np

a = np.array([1, 2, 3])  # shape: (3,)
b = np.array([4, 5, 6])  # shape: (3,)
1. 使用 np.concatenate

np.concatenate 会沿着指定的现有维度将数组拼接。
示例代码:

result = np.concatenate([a, b], axis=0)
print(result)  # 输出: [1 2 3 4 5 6]
print(result.shape)  # 输出: (6,)
  • 结果形状(6,),拼接后的数组仍然是 一维数组
  • 本质:只是将两个数组的值排列在一起,没有新增维度。

2. 使用 np.stack

np.stack 会在新的维度上将数组堆叠起来。
示例代码:

result = np.stack([a, b], axis=0)
print(result)
# 输出:
# [[1 2 3]
#  [4 5 6]]
print(result.shape)  # 输出: (2, 3)
  • 结果形状(2, 3),新增了一个维度,将数组堆叠成了一个 二维数组
  • 本质np.stack 会创建一个新的维度,这里是在第 0 维堆叠了数组。

另一个维度上的 np.stack 示例

如果你在 最后一个维度axis=-1)堆叠,会得到:

result = np.stack([a, b], axis=-1)
print(result)
# 输出:
# [[1 4]
#  [2 5]
#  [3 6]]
print(result.shape)  # 输出: (3, 2)
  • 结果形状(3, 2),表示沿着最后一个维度堆叠,每个元素形成一个小数组。

总结表格
操作示例代码结果结果形状特点
np.concatenatenp.concatenate([a, b], axis=0)[1, 2, 3, 4, 5, 6](6,)沿现有维度拼接,不新增维度
np.stacknp.stack([a, b], axis=0)[[1, 2, 3], [4, 5, 6]](2, 3)新增一个维度,将数组堆叠起来

形象比喻
  • np.concatenate 就像把两串珍珠(数组)连在一起,仍然是一条长串(同一维度)。
  • np.stack 就像把珍珠串一层一层叠起来,形成一个二维的“珍珠塔”(新增维度)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值