np.concatenate
np.concatenate()
是 NumPy 中用于沿指定轴连接多个数组的核心函数。它可以将多个数组在原有维度上合并,而不创建新的维度。以下是其详细用法和示例:
基本语法
python
运行
np.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")
(a1, a2, ...)
:需要连接的数组序列(元组或列表)。axis
:指定连接轴(默认0
,即垂直方向)。out
:可选参数,用于存储结果的数组。dtype
:指定结果的数据类型。
核心功能
- 沿指定轴合并数组:保持原有维度不变。
- 要求输入数组形状兼容:除
axis
维度外,其他维度必须相同。 - 支持多维数组:可处理 1D、2D、3D 等任意维度的数组。
示例解析
1. 一维数组(1D)的连接
python
运行
import numpy as npa = np.array([1, 2, 3])
b = np.array([4, 5, 6])# 沿轴 0 连接(一维数组只有一个轴)
result = np.concatenate((a, b))print(result) # 输出:[1 2 3 4 5 6]
print(result.shape) # 输出:(6,)
2. 二维数组(2D)的连接
python
运行
a = np.array([[1, 2], [3, 4]]) # 形状:(2, 2)
b = np.array([[5, 6]]) # 形状:(1, 2)# 沿轴 0 连接(垂直方向,行数增加)
result_axis0 = np.concatenate((a, b), axis=0)
print(result_axis0)
# 输出:
# [[1 2]
# [3 4]
# [5 6]]
print(result_axis0.shape) # 输出:(3, 2)# 沿轴 1 连接(水平方向,列数增加)
c = np.array([[7], [8]]) # 形状:(2, 1)
result_axis1 = np.concatenate((a, c), axis=1)
print(result_axis1)
# 输出:
# [[1 2 7]
# [3 4 8]]
print(result_axis1.shape) # 输出:(2, 3)
3. 三维数组(3D)的连接
python
运行
a = np.ones((2, 3, 4)) # 形状:(2, 3, 4)
b = np.ones((2, 3, 4)) # 形状:(2, 3, 4)# 沿轴 0 连接
result0 = np.concatenate((a, b), axis=0)
print(result0.shape) # 输出:(4, 3, 4)# 沿轴 1 连接
result1 = np.concatenate((a, b), axis=1)
print(result1.shape) # 输出:(2, 6, 4)# 沿轴 2 连接
result2 = np.concatenate((a, b), axis=2)
print(result2.shape) # 输出:(2, 3, 8)
与其他连接函数的区别
函数 | 功能描述 | 示例 |
---|---|---|
np.concatenate | 沿指定轴连接,不创建新维度 | np.concatenate((a, b), axis=1) |
np.stack | 沿新轴堆叠,增加一个维度 | np.stack((a, b), axis=0) |
np.hstack | 水平方向连接(等价于 axis=1 ) | np.hstack((a, b)) |
np.vstack | 垂直方向连接(等价于 axis=0 ) | np.vstack((a, b)) |
np.dstack | 深度方向连接(等价于 axis=2 ) | np.dstack((a, b)) |