numpy.concatenate
是 NumPy 中用于沿现有轴连接一系列数组的函数。与 np.stack
不同,concatenate
不会增加新的轴,而是沿着指定的已有轴将数组连接起来。各个数组在被连接的轴上必须具有相同的形状。
函数签名
numpy.concatenate(arrays, axis=0, out=None)
参数说明:
arrays
:需要连接的数组序列,数组的形状在除axis
指定的轴之外必须相同。axis
(可选):沿着哪个轴进行连接。默认是0
,表示在第一个维度上进行连接。out
(可选):一个用于存储输出结果的数组。一般可以忽略。
主要特点:
- 不增加新的维度,而是沿着已有维度连接。
axis
参数用于控制在哪个轴上进行连接。- 各个数组在被连接的轴上可以有不同的长度,但在其他轴上的维度必须一致。
示例 1:沿着第一个轴连接
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
result = np.concatenate((a, b), axis=0)
print(result)
- 输入数组维度:
a
是(2, 2)
,b
是(1, 2)
- 输出数组维度:
(3, 2)
,在第一个轴(行)上进行了连接
这里两个数组在第一个轴(axis=0
,即行)上进行连接,数组 b
添加到了数组 a
的下方。
示例 2:沿着第二个轴连接
import numpy as np
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
result = np.concatenate((a, b), axis=1)
print(result)
- 输入数组维度:
a
和b
都是(2, 2)
- 输出数组维度:
(2, 4)
,在第二个轴(列)上进行了连接
这里我们在第二个轴(axis=1
,即列)上进行连接,结果是将 b
的列追加到了 a
的列后面。
示例 3:连接一维数组
import numpy as np
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
result = np.concatenate((a, b), axis=0)
print(result)
- 输入数组维度:
a
和b
都是(3,)
(一维数组) - 输出数组维度:
(6,)
,在第一个轴(axis=0
)上进行了连接
在一维数组的情况下,concatenate
简单地将数组 b
连接到了数组 a
的末尾,得到一个长度为 6 的一维数组。
维度要求:
- 对于
axis=0
,被连接数组的行数可以不同,但列数必须相同。 - 对于
axis=1
,被连接数组的列数可以不同,但行数必须相同。 - 总的来说,除了在被连接的那个轴上的尺寸可以不同之外,其他轴的尺寸必须相同。
示例 4:三维数组的连接
import numpy as np
a = np.array([[[1, 2], [3, 4]]])
b = np.array([[[5, 6], [7, 8]]])
result = np.concatenate((a, b), axis=0)
print(result)
- 输入数组维度:
a
和b
都是(1, 2, 2)
(三维数组) - 输出数组维度:
(2, 2, 2)
,在第一个轴上进行了连接
总结
np.concatenate
沿着现有轴连接数组,不增加新的维度。- 使用
axis
参数来指定在哪个轴上进行连接。 - 除了连接的那个轴外,其他轴的维度必须保持一致。