- 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 模块中提供的 concatenate() 函数在 Numpy 中连接数组。
concatenate() 函数
NumPy 中的 concatenate() 函数用于沿指定轴连接(组合)数组。它允许你根据提供的 axis 参数沿行或列组合数组。以下是语法:
numpy.concatenate((a1, a2, ...), axis=0, out=None)
其中,
a1, a2, ... − 这些是要连接的数组序列。这些数组除了由 axis 指定的轴之外,必须在所有轴上具有相同的形状。默认为 0(沿行)。使用 1 沿列连接。
axis − 指定沿哪个轴连接数组。
out(可选)− 这允许你指定一个输出数组,连接结果将存储在其中。
沿行连接数组
在 NumPy 中沿行连接数组意味着垂直堆叠数组,将一个数组放在另一个数组的顶部以创建一个更大的数组。这对于组合数据集或垂直扩展数据很有用。
在 NumPy 中,可以使用 numpy.concatenate() 函数并将“axis”参数设置为“0”来实现此目的。
示例
在以下示例中,我们使用 numpy.concatenate() 函数沿行连接两个 NumPy 数组“arr1”和“arr2”:
import numpy as np arr1 = np.array([[1, 2, 3], [4, 5, 6]]) arr2 = np.array([[7, 8, 9], [10, 11, 12]]) # Concatenate along rows concatenated_arr = np.concatenate((arr1, arr2), axis=0) print("Concatenated Array along rows:",concatenated_arr)
获得以下输出:
Concatenated Array along rows: [[ 1 2 3] [ 4 5 6] [ 7 8 9] [10 11 12]]
沿列连接数组
我们还可以通过水平堆叠数组在 NumPy 中沿列连接数组,将一个数组放在另一个数组旁边以水平扩展数据。这对于组合数据集很有用,其中每个数组表示需要连接的数据列。
在 NumPy 中,可以使用 numpy.concatenate() 函数并将“axis”参数设置为“1”来实现此目的。
示例
在下面的示例中,我们使用 numpy.concatenate() 函数沿列连接两个 NumPy 数组“arr1”和“arr2”:
import numpy as np # Create two arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # Concatenate along columns concatenated_arr = np.concatenate((arr1, arr2), axis=1) print("Concatenated Array along columns:") print(concatenated_arr)
这将产生以下结果:
Concatenated Array along columns: [[1 2 5 6] [3 4 7 8]]
连接具有混合维度的数组
在 NumPy 中连接具有混合维度的数组涉及组合最初具有不同形状的数组。
为了实现这一点,我们使用广播技术来调整数组的形状,以便它们与连接兼容。这涉及扩展较小数组的维度以沿连接轴与较大数组匹配。
在 NumPy 中,可以使用 np.reshape()、np.expand_dims() 和切片等函数调整数组的维度。
示例:连接 1D 数组和 2D 数组
让我们考虑连接一个 1D 数组和一个 2D 数组。1D 数组将沿适当的维度扩展以匹配 2D 数组:
import numpy as np # Create a 1D array arr1 = np.array([1, 2, 3]) # Create a 2D array arr2 = np.array([[4, 5, 6], [7, 8, 9]]) # Expand dimensions of the 1D array to match the 2D array for concatenation along rows expanded_arr1 = np.expand_dims(arr1, axis=0) # Concatenate along rows (axis=0) concatenated_arr = np.concatenate((expanded_arr1, arr2), axis=0) print("Concatenated Array with Mixed Dimensions along rows:") print(concatenated_arr)
以上代码的输出如下:
Concatenated Array with Mixed Dimensions along rows: [[1 2 3] [4 5 6] [7 8 9]]
示例:连接 2D 数组和 3D 数组
如果你有更多维度的数组,你可以类似地扩展它们的维度以相互匹配。例如,连接 2D 数组和 3D 数组涉及扩展 2D 数组的维度:
import numpy as np # Create a 2D array arr1 = np.array([[1, 2], [3, 4]]) # Create a 3D array arr2 = np.array([[[5, 6], [7, 8]], [[9, 10], [11, 12]]]) # Expand dimensions of the 2D array to match the 3D array for concatenation along the third dimension (axis=2) expanded_arr1 = np.expand_dims(arr1, axis=2) # Concatenate along the third dimension (axis=2) concatenated_arr = np.concatenate((expanded_arr1, arr2), axis=2) print("Concatenated Array with Mixed Dimensions along axis=2:") print(concatenated_arr)
获得的输出如下所示:
Concatenated Array with Mixed Dimensions along axis=2: [[[ 1 5 6] [ 2 7 8]] [[ 3 9 10] [ 4 11 12]]]
沿特定轴连接数组
你可以使用 concatenate() 函数的 axis 参数沿“0”和“1”以外的轴连接数组。此参数确定将沿哪个维度连接数组。通过更改 axis 的值,你可以控制数组是沿行、列还是更高维度连接。
对于具有两个以上维度的数组,你可以指定更高的轴进行连接。例如,沿第三轴(axis=2)连接涉及沿其深度组合数组。
示例
在以下示例中,我们沿第三维度连接两个 3D 数组:
import numpy as np # 3D arrays arr1 = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) arr2 = np.array([[[9, 10], [11, 12]], [[13, 14], [15, 16]]]) # Concatenate along the third dimension (axis=2) result = np.concatenate((arr1, arr2), axis=2) print("Concatenated along third dimension:") print(result)
执行以上代码后,我们将获得以下输出:
Concatenated along third dimension: [[[ 1 2 9 10] [ 3 4 11 12]] [[ 5 6 13 14] [ 7 8 15 16]]]
使用 stack() 函数连接数组
NumPy stack() 函数也可用于沿新轴连接数组。与 numpy.concatenate() 沿现有轴连接数组不同,numpy.stack() 会添加一个额外的维度,在结果中创建一个新轴。以下是语法:
numpy.stack(arrays, axis=0)
其中,
arrays − 要堆叠的数组序列。所有数组必须具有相同的形状。
axis − 沿哪个轴堆叠数组。默认为 0。
示例
在下面的示例中,我们使用 NumPy stack() 函数沿新的第三轴(axis=2)堆叠两个 2D 数组:
import numpy as np # Example 2D arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # Stack along a new third axis result = np.stack((arr1, arr2), axis=2) print("Stacked along a new axis:") print(result)
产生的结果如下:
Stacked along a new axis: [[[1 5] [2 6]] [[3 7] [4 8]]]