📜  Python中的 numpy.stack()(1)

📅  最后修改于: 2023-12-03 15:04:33.792000             🧑  作者: Mango

Python中的 numpy.stack()

在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 堆叠成了一个二维数组。

参数axis的不同取值

如果我们更改堆叠轴,会产生不同的结果。下面是示例代码以及不同值的输出结果。

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()函数是一个非常有用的在数组维度上进行转换的工具。通过指定不同的参数来在不同的轴上堆叠数组,我们可以快速创建新的多维数组。需要注意的是,输入的数组必须是形状相同的数组序列。