numpy np.stack 介绍
numpy.stack
函数用于沿新的轴连接数组序列。它将一系列的数组按照指定的轴堆叠在一起,创建一个新的数组。numpy.stack
是 NumPy 中用于沿着新的轴将一系列数组堆叠起来的函数。与 numpy.concatenate
不同,stack
会在指定的轴上创建一个新的维度。
函数签名
numpy.stack(arrays, axis=0)
参数说明:
arrays
:需要堆叠的数组序列(例如列表或元组),这些数组必须具有相同的形状。axis
(可选):指定新轴插入的位置。默认为0
,表示在第一个轴添加新维度。
主要特点:
- 堆叠的数组必须形状一致。
stack
在指定轴上引入了一个新维度,因此结果的维度会比输入数组多 1。
示例 1:基本用法
import numpy as np
# 创建两个形状相同的数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 沿着新的轴堆叠
result = np.stack((a, b), axis=0)
print(result)
- 输入数组维度:
(3,)
(一维数组) - 输出数组维度:
(2, 3)
(二维数组)
这里我们在 axis=0
(第一个维度)上创建了一个新的维度,结果是两个数组被堆叠成了二维数组。
示例 2:沿不同轴堆叠
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
# 沿着第二个轴堆叠
result = np.stack((a, b), axis=1)
print(result)
- 输入数组维度:
(3,)
(一维数组) - 输出数组维度:
(3, 2)
(二维数组)
在这个例子中,axis=1
表示新的轴插入在第二个维度,因此结果的形状是 (3, 2)
,每个位置的两个数组元素被垂直堆叠。
示例 3:多维数组堆叠
import numpy as np
# 两个形状相同的二维数组
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 沿着新轴堆叠
result = np.stack((a, b), axis=0)
print(result)
-
输入数组维度:
(2, 2)
(二维数组) -
输出数组维度:
(2, 2, 2)
(三维数组) -
轴说明: 这里我们在
axis=0
上创建了一个新的维度,因此结果是三维数组,其中两个二维数组被堆叠在一起。
维度变化
- 输入数组形状:
(A, B, C, ...)
- 输出数组形状:
(N, A, B, C, ...)
,其中N
是堆叠的数组数量。新轴会按照axis
参数插入到指定位置,维度数比原来多 1。
示例 4:自定义轴堆叠
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
# 沿着第三个轴堆叠
result = np.stack((a, b), axis=2)
print(result)
输出:
array([[[1, 5],
[2, 6]],
[[3, 7],
[4, 8]]])
- 输入数组维度:
(2, 2)
- 输出数组维度:
(2, 2, 2)
在 axis=2
这个例子中,新的轴被插入到了最后,生成的三维数组在最后一个维度上堆叠了原始数组的元素。
总结
np.stack
是在指定轴上增加一个新维度,并将多个数组沿着该轴堆叠。- 堆叠的数组必须具有相同的形状。
- 使用
axis
参数可以指定在哪个位置添加新维度,维度数将比原始数组多 1。