You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

numpy中concatenate与stack两种方法的区别是什么?

numpy中concatenate与stack的核心差异

首先需要纠正你测试中的输出误区:你贴的三维数组输出实际是stack的运行结果,按你给出的concatenate代码运行,得到的是完全不同的二维数组输出,二者不可能得到完全一致的结果,核心差异可以从以下几个维度区分:

1. 本质逻辑不同

  • concatenate是在现有维度上直接拼接,不会改变数组的总维度数:两个shape为(2,2)的二维数组,沿axis=0拼接后还是二维数组,shape变为(4,2),仅拼接轴的长度相加。
  • stack是先新增一个维度再拼接,会让数组总维度+1:两个shape为(2,2)的二维数组,沿axis=0堆叠后变成三维数组,shape为(2,2,2),新增轴的长度等于参与堆叠的数组数量。

2. 参数要求不同

  • concatenate只要求参与拼接的数组,除了拼接轴之外的其他维度shape完全一致即可。
  • stack要求参与堆叠的所有数组的shape完全一致。

3. 测试代码实际运行验证

concatenate运行示例

import numpy as np
my_arr_1 = np.array([ [1,4] ,   [2,7] ])
my_arr_2 = np.array([ [0,5]   , [3,8] ])

join_array=np.concatenate((my_arr_1,my_arr_2),axis=0)
print(join_array)
print(join_array.shape) # 输出 (4, 2)

运行输出:

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

stack运行示例

import numpy as np
my_arr_1 = np.array([ [1,4] ,   [2,7] ])
my_arr_2 = np.array([ [0,5]   , [3,8] ])

join1_array=np.stack((my_arr_1,my_arr_2),axis=0)
print(join1_array)
print(join1_array.shape) # 输出 (2, 2, 2)

运行输出就是你贴的三维结构:

[[[1 4]
  [2 7]]

 [[0 5]
  [3 8]]]

快速区分使用场景

如果只是要把多个数组合并到已有维度里,选concatenate;如果需要给数组新增一个分组维度,把多个数组作为新维度下的元素,选stack。

内容的提问来源于stack exchange,提问作者user17344362

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:24:00