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
(可选) - 结果数组的数据类型
注意事项
out
和dtype
参数只能传递其中一个。- 输入元组中所有数组的形状必须相同。
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']]]