📅  最后修改于: 2023-12-03 15:04:33.792000             🧑  作者: Mango
在Python的科学计算库numpy中,numpy.stack()
函数是一个用于沿着给定轴将序列的数组堆叠起来,生成一个新的数组的函数。
numpy.stack(arrays, axis=0)
arrays
:需要堆叠的序列。它必须是相同形状的数组序列。axis
:指定堆叠轴。默认为 0。import numpy as np
# 定义3个数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])
# 堆叠成一个数组
result = np.stack((a, b, c))
print(result)
输出结果为:
[[1 2 3]
[4 5 6]
[7 8 9]]
在这个例子中,我们定义了3个形状相同的一维数组,并将它们沿着默认的轴 0
堆叠成了一个二维数组。
如果我们更改堆叠轴,会产生不同的结果。下面是示例代码以及不同值的输出结果。
import numpy as np
# 定义3个数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.array([7, 8, 9])
# 沿着轴0堆叠
result = np.stack((a, b, c), axis=0)
print(result)
# 沿着轴1堆叠
result = np.stack((a, b, c), axis=1)
print(result)
# 沿着轴2堆叠
result = np.stack((a, b, c), axis=2)
print(result)
分别输出结果为:
[[1 2 3]
[4 5 6]
[7 8 9]]
[[1 4 7]
[2 5 8]
[3 6 9]]
ValueError: axis 2 is out of bounds for array of dimension 1
可以看到,沿着轴 0
堆叠生成的数组和默认的情况相同。而沿着轴 1
堆叠生成的数组,在每个数组中都取了第一个元素,生成了一个新的一维数组。当我们试图沿着轴 2
堆叠时,由于原始数组只有一维,axis=2
已经超出了数组的维度,因此会报错。
numpy.stack()
函数是一个非常有用的在数组维度上进行转换的工具。通过指定不同的参数来在不同的轴上堆叠数组,我们可以快速创建新的多维数组。需要注意的是,输入的数组必须是形状相同的数组序列。