NumPy stack()

NumPy的 stack() 方法沿新轴连接一系列数组。

示例

import numpy as np

# create 2-D arrays
array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[4, 5], [6, 7]])

# join the arrays stackedArray= np.stack((array1, array2))
print(stackedArray) ''' Output: [[[0 1] [2 3]] [[4 5] [6 7]]] '''

在这里,stack() 方法沿新轴组合两个二维数组,得到一个三维数组。


stack() 语法

stack() 的语法是

numpy.stack((array1, array2, …), axis = 0, out)

stack() 参数

stack() 方法接受以下参数

  • (array1, array2, …) - 要连接的数组序列
  • axis (可选) - 定义连接数组的维度
  • out (可选) - 用于存储结果的目标。
  • dtype (可选) - 结果数组的数据类型

注意事项

  • outdtype 参数只能传递其中一个。
  • 输入元组中所有数组的形状必须相同。

stack() 返回值

stack() 方法返回连接后的数组。


示例 1:堆叠三个数组

import numpy as np

array1 = np.array( [[1, 2], [3, 4]] )
array2 = np.array( [[5, 6], [7, 8]] )
array3 = np.array( [[9, 10], [11, 12]] )

# stack 3 arrays stackedArray = np.stack((array1, array2, array3))
print(stackedArray)

输出

[[[ 1  2]
  [ 3  4]]

 [[ 5  6]
  [ 7  8]]

 [[ 9 10]
  [11 12]]]

在这里,stack() 方法连接了三个二维数组并返回了一个三维数组。

请注意,我们没有传递 axis 参数。因此,axis 默认值为 **0**,数组按行(垂直)堆叠。

注意

  • stack(): 添加一个新维度,并将数组组合成一个更高维度的数组。
  • concatenate(): 沿现有轴连接数组,而不引入新维度

示例 2:在不同维度堆叠两个数组

import numpy as np

array1 = np.array([0, 1])
array2 = np.array([2, 3])

print('Joining the array when axis = 0')

# join the arrays at axis 0 stackedArray = np.stack((array1, array2), 0)
print(stackedArray) print('Joining the array when axis = 1')
# join the arrays at axis 1 stackedArray = np.stack((array1, array2), 1)
print(stackedArray)

输出

Joining the array when axis = 0
[[0 1]
 [2 3]]
Joining the array when axis = 1
[[0 2]
 [1 3]]

在这里,当 axis 为 **0** 时,数组按行堆叠;当 axis 为 **1** 时,数组按列堆叠。


示例 3:将现有数组作为堆叠数组返回

在我们之前的例子中,stack() 函数生成了一个新的输出数组。

但是,我们可以使用 out 参数使用现有数组来存储输出。

import numpy as np

array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[10, 11], [12, 13]])

# create an array of shape (2, 2, 2)
# and initialize all elements to 0
array3 = np.zeros((2, 2, 2)) 

# join the arrays and store the result in array3 np.stack((array1, array2), out = array3)
print(array3)

输出

[[[ 0.  1.]
  [ 2.  3.]]

 [[10. 11.]
  [12. 13.]]]

注意: 输出数组的形状必须与堆叠数组的形状匹配,否则会出错。


示例 4:指定堆叠数组的数据类型

我们可以通过传递 dtype 参数来更改堆叠数组的数据类型。

import numpy as np

array1 = np.array([[0, 1], [2, 3]])
array2 = np.array([[10, 11], [12, 13]])

# change elements of the stacked array to string stackedArray = np.stack((array1, array2), dtype = str)
print(stackedArray)

输出

[[['0' '1']
  ['2' '3']]

 [['10' '11']
  ['12' '13']]]

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战