- NumPy 教程
- NumPy - 首页
- NumPy - 简介
- NumPy - 环境配置
- NumPy 数组
- NumPy - Ndarray 对象
- NumPy - 数据类型
- NumPy 数组的创建和操作
- NumPy - 数组创建函数
- NumPy - 数组操作
- NumPy - 从现有数据创建数组
- NumPy - 从数值范围创建数组
- NumPy - 数组迭代
- NumPy - 数组重塑
- NumPy - 数组连接
- NumPy - 数组堆叠
- NumPy - 数组分割
- NumPy - 数组扁平化
- NumPy - 数组转置
- NumPy 索引和切片
- NumPy - 索引与切片
- NumPy - 高级索引
- NumPy 数组属性和操作
- NumPy - 数组属性
- NumPy - 数组形状
- NumPy - 数组大小
- NumPy - 数组步长
- NumPy - 数组元素大小
- NumPy - 广播
- NumPy - 算术运算
- NumPy - 数组加法
- NumPy - 数组减法
- NumPy - 数组乘法
- NumPy - 数组除法
- NumPy 高级数组操作
- NumPy - 交换数组轴
- NumPy - 字节交换
- NumPy - 复制与视图
- NumPy - 元素级数组比较
- NumPy - 数组过滤
- NumPy - 数组连接
- NumPy - 排序、搜索和计数函数
- NumPy - 数组搜索
- NumPy - 数组的并集
- NumPy - 查找唯一行
- NumPy - 创建日期时间数组
- NumPy - 二元运算符
- NumPy - 字符串函数
- NumPy - 数学函数
- NumPy - 统计函数
- NumPy - 矩阵库
- NumPy - 线性代数
- NumPy - Matplotlib
- NumPy - 使用 Matplotlib 绘制直方图
- NumPy - NumPy 的 I/O 操作
- NumPy 排序和高级操作
- NumPy - 数组排序
- NumPy - 沿轴排序
- NumPy - 使用花式索引排序
- NumPy - 结构化数组
- NumPy - 创建结构化数组
- NumPy - 操作结构化数组
- NumPy - 字段访问
- NumPy - 记录数组
- Numpy - 加载数组
- Numpy - 保存数组
- NumPy - 向数组追加值
- NumPy - 交换数组列
- NumPy - 向数组插入轴
- NumPy 处理缺失数据
- NumPy - 处理缺失数据
- NumPy - 识别缺失值
- NumPy - 删除缺失数据
- NumPy - 缺失数据插补
- NumPy 性能优化
- NumPy - 使用数组进行性能优化
- NumPy - 使用数组进行向量化
- NumPy - 数组的内存布局
- Numpy 线性代数
- NumPy - 线性代数
- NumPy - 矩阵库
- NumPy - 矩阵加法
- NumPy - 矩阵减法
- NumPy - 矩阵乘法
- NumPy - 元素级矩阵运算
- NumPy - 点积
- NumPy - 矩阵求逆
- NumPy - 行列式计算
- NumPy - 特征值
- NumPy - 特征向量
- NumPy - 奇异值分解
- NumPy - 解线性方程组
- NumPy - 矩阵范数
- NumPy 元素级矩阵运算
- NumPy - 求和
- NumPy - 平均值
- NumPy - 中位数
- NumPy - 最小值
- NumPy - 最大值
- NumPy 集合运算
- NumPy - 唯一元素
- NumPy - 交集
- NumPy - 并集
- NumPy - 差集
- NumPy 有用资源
- NumPy 编译器
- NumPy - 快速指南
- NumPy - 有用资源
- NumPy - 讨论
NumPy - 数组堆叠
NumPy 数组堆叠
NumPy 中的数组堆叠是指沿新维度组合多个数组,从而创建更高维度的数组。这与连接不同,连接是在现有轴上组合数组,不会添加新的维度。
NumPy 提供了几个函数来实现堆叠。它们如下所示:
- 使用 numpy.stack() 函数
- 使用 numpy.vstack() 函数
- 使用 numpy.hstack() 函数
- 使用 numpy.dstack() 函数
- 使用 numpy.column_stack() 函数
使用 stack() 函数堆叠数组
我们可以使用 NumPy 中的 stack() 函数沿新轴堆叠一系列数组,在结果中创建一个新维度。
与沿现有轴组合数组的 numpy.concatenate() 函数不同,numpy.stack() 函数在指定位置向被堆叠的数组添加一个新轴。
以下是 NumPy 中 stack() 函数的语法:
np.stack(arrays, axis=0)
其中:
arrays − 要堆叠的数组序列。
axis − 堆叠数组的轴。默认值为 0,这会在最前面添加一个新轴。
示例:堆叠一维数组
在下面的示例中,我们使用 numpy.stack() 函数沿新轴 (axis 0) 堆叠三个一维数组,得到一个二维数组:
import numpy as np
# arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])
# Stack arrays along a new axis
stacked_arr = np.stack((arr1, arr2, arr3), axis=0)
print("Stacked Array along a new axis (Axis 0):")
print(stacked_arr)
获得的输出如下:
Stacked Array along a new axis (Axis 0): [[1 2 3] [4 5 6] [7 8 9]]
示例:更改轴
numpy.stack() 函数中的“axis”参数决定了新轴的插入位置。通过更改 axis 的值,可以控制数组的堆叠方式:
import numpy as np
# arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
arr3 = np.array([7, 8, 9])
# Stack arrays along axis 1
stacked_arr = np.stack((arr1, arr2, arr3), axis=1)
print("Stacked Array along Axis 1:")
print(stacked_arr)
这将产生以下结果:
Stacked Array along Axis 1: [[1 4 7] [2 5 8] [3 6 9]]
示例:堆叠多维数组
numpy.stack() 函数也可以用于堆叠多维数组。该函数向高维数组添加一个新轴,并相应地堆叠它们。
在这里,我们堆叠两个二维数组:
import numpy as np
# 2D arrays
arr1 = np.array([[1, 2],
[3, 4]])
arr2 = np.array([[5, 6],
[7, 8]])
# Stack arrays along a new axis
stacked_arr = np.stack((arr1, arr2), axis=0)
print("Stacked 2D Arrays along a new axis (Axis 0):")
print(stacked_arr)
以上代码的输出如下:
Stacked 2D Arrays along a new axis (Axis 0): [[[1 2] [3 4]] [[5 6] [7 8]]]
使用 column_stack() 函数堆叠数组
NumPy 中的 numpy.column_stack() 函数用于将一维数组作为列堆叠到二维数组中,或者将二维数组按列堆叠。此函数提供了一种沿第二个轴 (axis=1) 组合数组的方法,有效地增加了结果数组中的列数。
以下是语法:
np.column_stack(tup)
其中,tup 是要堆叠的数组元组。数组可以是一维或二维的,但必须具有相同的行数。
示例:将一维数组作为列堆叠
在下面的示例中,我们使用 NumPy column_stack() 函数将两个一维数组作为列堆叠到二维数组中:
import numpy as np
# 1D arrays
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
# Column-stack 1D arrays
stacked_arr_1d = np.column_stack((arr1, arr2))
print("Stacked 1D arrays as 2D array:")
print(stacked_arr_1d)
我们得到如下所示的输出:
Stacked 1D arrays as 2D array: [[1 4] [2 5] [3 6]]
示例:按列堆叠二维数组
在这里,我们使用 NumPy column_stack() 函数按列堆叠两个二维数组:
import numpy as np
# 2D arrays
arr3 = np.array([[1, 2],
[3, 4]])
arr4 = np.array([[5, 6],
[7, 8]])
# Column-stack 2D arrays
stacked_arr_2d = np.column_stack((arr3, arr4))
print("Stacked 2D arrays column-wise:")
print(stacked_arr_2d)
获得的输出如下:
Stacked 2D arrays column-wise: [[1 2 5 6] [3 4 7 8]]
垂直堆叠
我们还可以使用 NumPy 中的 vstack() 函数垂直(按行)堆叠数组。它等同于使用 numpy.concatenate() 函数和 "axis=0",其中数组沿第一个轴连接。
这将产生一个行数增加的数组,将多个数组按行组合。以下是语法:
numpy.vstack(tup)
其中,tup 是要垂直堆叠的数组元组。所有数组必须具有相同的列数。
示例
在下面的示例中,我们使用 NumPy vstack() 函数垂直堆叠两个数组:
import numpy as np
# arrays
arr1 = np.array([[1, 2, 3],
[4, 5, 6]])
arr2 = np.array([[7, 8, 9],
[10, 11, 12]])
# Stack arrays vertically
stacked_arr = np.vstack((arr1, arr2))
print("Vertically Stacked Array:")
print(stacked_arr)
获得的输出如下:
Vertically Stacked Array: [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
水平堆叠
我们可以使用 NumPy 中的 hstack() 函数水平(按列)堆叠数组。它等同于使用 numpy.concatenate() 函数和 "axis=1",其中二维数组沿第二个轴连接。
这将产生一个列数增加的数组,将多个数组按列组合。以下是语法:
numpy.hstack(tup)
其中,tup 是要水平堆叠的数组元组。所有数组必须具有相同的行数。
示例
在下面的示例中,我们使用 NumPy hstack() 函数水平堆叠两个数组:
import numpy as np
# arrays
arr1 = np.array([[1, 2],
[3, 4]])
arr2 = np.array([[5, 6],
[7, 8]])
# Stack arrays horizontally
stacked_arr = np.hstack((arr1, arr2))
print("Horizontally Stacked Array:")
print(stacked_arr)
执行上述代码后,我们得到以下输出:
Horizontally Stacked Array: [[1 2 5 6] [3 4 7 8]]
深度堆叠
numpy.dstack() 函数用于沿第三维度(也称为深度维度)堆叠数组。这将按深度组合数组,有效地在结果数组中创建一个新维度。
当您想要将多个二维数组组合成单个三维数组时,它特别有用。以下是语法:
np.dstack(tup)
其中,tup 是要沿第三维度堆叠的数组元组。所有数组的前两个维度必须具有相同的形状。
示例
在这个例子中,我们使用 NumPy dstack() 函数沿第三维度堆叠两个数组:
import numpy as np
# arrays
arr1 = np.array([[1, 2],
[3, 4]])
arr2 = np.array([[5, 6],
[7, 8]])
# Stack arrays along the third dimension
stacked_arr = np.dstack((arr1, arr2))
print("Depth-wise Stacked Array:")
print(stacked_arr)
产生的结果如下:
Depth-wise Stacked Array: [[[1 5] [2 6]] [[3 7] [4 8]]]