📜  np.stack - Python (1)

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

Python中的np.stack函数介绍

np.stack是numpy中的一个函数,用于在指定坐标轴上沿着新的轴将提供的数组序列堆叠起来。这个函数是用来沿新轴连接数组序列的函数,一般称之为拼接(concatenate)。实现了concatenate函数的功能,只是concatenate是沿着现有轴拼接,而stack是沿着新轴拼接。

语法
numpy.stack(arrays, axis=0, out=None)
  • arrays:是一个序列或者数组,可以是不同维度的数组,这些数组要么是已经存在的数组要么是新创建的数组
  • axis:是要创建的轴,默认为0,如果创建的值是负数,则从后往前数
  • out:函数返回一个新的数组,用来保存堆叠后的输出,如果提供out参数,那么就不需要新建一个数组。
实例

假设有两个二维数组,我们分别引入numpy和随机函数,并创建两个类似的数组:

import numpy as np

# 创建两个二维数组
a = np.random.randint(0, 10, size=(2, 3))
b = np.random.randint(0, 10, size=(2, 3))

print('Array a:\n', a)
print('Array b:\n', b)

输出:

Array a:
 [[8 9 0]
 [9 7 7]]
Array b:
 [[8 0 0]
 [7 7 2]]

然后我们使用stack函数将两个数组在新的轴上堆叠起来:

c = np.stack((a,b), axis=0)

print('Array c:\n', c)

输出:

Array c:
 [[[8 9 0]
  [9 7 7]]

 [[8 0 0]
  [7 7 2]]]

我们可以看到,这里得到了一个三维数组,其中第一个轴代表两个原数组,第二个和第三个轴和原数组一样。如果我们将axis改为1,我们可以看到是在第一个轴中加上新的轴:

c = np.stack((a,b), axis=1)

print('Array c:\n', c)

输出:

Array c:
 [[[8 9 0]
  [8 0 0]]

 [[9 7 7]
  [7 7 2]]]

同样,我们可以在第二个轴中加上新的轴:

c = np.stack((a,b), axis=2)

print('Array c:\n', c)

输出:

Array c:
 [[[8 8]
  [9 7]
  [0 0]]

 [[9 7]
  [7 7]
  [7 2]]]
总结

通过np.stack函数,我们可以很方便地在指定的轴上沿着新的轴将提供的数组序列堆叠起来,并得到一个新的数组。在数据处理中,这个函数很常用,可以将几个数组合并成更复杂的结构。