Numpy concatenate函数
numpy.concatenate是一个用于数组拼接的函数,它可以将两个或多个数组沿指定轴连接在一起。在数据处理和分析中,我们经常需要将不同的数据源进行合并,这时候,numpy.concatenate就派上了用场。
1. 基本用法
numpy.concatenate的基本语法如下:
numpy.concatenate((a1, a2, ...), axis=0, out=None)
其中,a1, a2, ...是需要连接的数组序列,axis是连接轴,默认为0,out是可选参数,用于指定输出数组。
下面我们通过一个例子来看一下numpy.concatenate的基本用法:
import numpy as np
# 创建两个一维数组
a1 = np.array([1, 2, 3])
a2 = np.array([4, 5, 6])
# 使用numpy.concatenate进行数组拼接
result = np.concatenate((a1, a2))
print(result)  # 输出:[1 2 3 4 5 6]
Output:

在这个例子中,我们创建了两个一维数组a1和a2,然后使用numpy.concatenate将它们拼接在一起,得到了新的一维数组result。
2. 指定轴进行拼接
numpy.concatenate默认沿着第一个轴(即axis=0)进行拼接,但我们也可以通过axis参数来指定其他轴进行拼接。
例如,对于二维数组,我们可以沿着列方向(即axis=1)进行拼接:
import numpy as np
# 创建两个二维数组
a1 = np.array([[1, 2], [3, 4]])
a2 = np.array([[5, 6], [7, 8]])
# 使用numpy.concatenate进行数组拼接,指定axis=1
result = np.concatenate((a1, a2), axis=1)
print(result)  # 输出:[[1 2 5 6]
               #       [3 4 7 8]]
Output:

在这个例子中,我们创建了两个二维数组a1和a2,然后使用numpy.concatenate将它们沿着列方向拼接在一起,得到了新的二维数组result。
3. 拼接不同维度的数组
当我们需要拼接的数组维度不同时,可以使用numpy.concatenate配合numpy.newaxis来实现。
例如,我们可以将一个一维数组和一个二维数组进行拼接:
import numpy as np
# 创建一个一维数组和一个二维数组
a1 = np.array([1, 2, 3])
a2 = np.array([[4, 5, 6], [7, 8, 9]])
# 使用numpy.newaxis增加a1的维度
a1 = a1[:, np.newaxis]
# 使用numpy.concatenate进行数组拼接
result = np.concatenate((a1, a2), axis=1)
print(result)  # 输出:[[1 4 5 6]
               #       [2 7 8 9]
               #       [3 0 0 0]]
在这个例子中,我们创建了一个一维数组a1和一个二维数组a2,然后使用numpy.newaxis增加了a1的维度,使其可以和a2进行拼接,最后使用numpy.concatenate将它们拼接在一起,得到了新的二维数组result。
4. 使用out参数
numpy.concatenate还有一个可选参数out,我们可以使用它来指定输出数组。这样,我们可以将结果直接保存到一个已经存在的数组中,而不需要创建新的数组。
例如,我们可以创建一个空的数组,然后将拼接结果保存到这个数组中:
import numpy as np
# 创建两个一维数组
a1 = np.array([1, 2, 3])
a2 = np.array([4, 5, 6])
# 创建一个空的数组用于保存结果
result = np.empty(6, dtype=int)
# 使用numpy.concatenate进行数组拼接,指定out参数
np.concatenate((a1, a2), out=result)
print(result)  # 输出:[1 2 3 4 5 6]
Output:

在这个例子中,我们创建了两个一维数组a1和a2,然后创建了一个空的数组result用于保存结果,最后使用numpy.concatenate将a1和a2拼接在一起,结果直接保存到了result中。
5. 总结
numpy.concatenate是一个非常实用的函数,它可以帮助我们方便地进行数组拼接。无论是一维数组,还是多维数组,无论是同维度的数组,还是不同维度的数组,numpy.concatenate都可以很好地完成任务。
在实际使用中,我们还可以根据需要,通过调整axis参数和out参数,来实现更多的功能。
极客笔记