一、Python数组基础
在开始探究Python中的数组操作函数前,有必要简单了解一下Python中的数组基础知识。Python中数组也称为列表(list),可以使用方括号([])定义,其中元素之间使用逗号(,)分隔。
>>> a = [1, 2, 3, 4, 5]
>>> print(a)
[1, 2, 3, 4, 5]
可以使用下标(索引)访问数组中的元素,Python中的下标是从0开始的。
>>> print(a[0])
1
>>> print(a[4])
5
二、Python中的数组合并方法
如果需要将多个数组合并成一个数组,Python中提供了多种方法。
1、使用“+”符号
可以使用“+”符号将两个数组合并成一个数组。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a + b
>>> print(c)
[1, 2, 3, 4, 5, 6]
2、使用extend()方法
使用extend()方法可以将一个数组的元素添加到另一个数组中。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> a.extend(b)
>>> print(a)
[1, 2, 3, 4, 5, 6]
3、使用*号
可以使用*号将一个数组重复多次来实现多个数组的合并。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> c = a * 2 + b * 3
>>> print(c)
[1, 2, 3, 1, 2, 3, 4, 5, 6, 4, 5, 6, 4, 5, 6]
4、使用append()方法
使用append()方法只能将一个元素添加到数组的末尾位置,并不能实现多个数组的合并。
三、Python中的高级数组合并函数——numpy.concatenate()
虽然以上方法可以实现多个数组的合并,但是需要使用多行代码,并且有一些限制,比如只能按照一定的顺序合并等等。而在numpy模块中有一个函数——numpy.concatenate(),可以一行代码完成多个数组的合并,并且可以自由指定合并的顺序。
1、numpy.concatenate()的用法
numpy.concatenate()函数的基本参数如下:
- arrays: 需要合并的数组,要求至少传入一个数组。
- axis: 合并的轴向,默认为0,表示沿着第一个维度(即行)进行合并,如果传入1则表示沿着第二个维度(即列)进行合并。
- out: 可选参数,合并后的输出结果。
下面是numpy.concatenate()函数的使用示例:
>>> import numpy as np
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6]])
>>> c = np.concatenate((a, b), axis=0)
>>> print(c)
[[1, 2],
[3, 4],
[5, 6]]
上面的代码中,我们使用了numpy模块中的array()函数创建了两个二维数组a和b,然后使用numpy.concatenate()函数将它们沿着第一个维度(即行)进行合并,得到了一个三行两列的二维数组c。
2、numpy.concatenate()更多示例
2.1 沿着不同轴向合并
numpy.concatenate()函数可以沿着不同的轴向进行合并,具体使用如下:
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6], [7, 8]])
>>> c = np.concatenate((a, b), axis=0)
>>> print(c)
[[1, 2],
[3, 4],
[5, 6],
[7, 8]]
>>> d = np.concatenate((a, b), axis=1)
>>> print(d)
[[1, 2, 5, 6],
[3, 4, 7, 8]]
上面的代码中,我们使用了numpy模块中的array()函数创建了两个二维数组a和b,然后分别使用numpy.concatenate()函数将它们沿着第一个维度(即行)和第二个维度(即列)进行合并,得到了两个新的二维数组c和d。
2.2 将多个数组进行合并
numpy.concatenate()函数可以接受多个数组作为参数,将它们合并成一个数组,具体使用如下:
>>> a = np.array([[1, 2], [3, 4]])
>>> b = np.array([[5, 6], [7, 8]])
>>> c = np.array([[9, 10], [11, 12]])
>>> d = np.concatenate((a, b, c), axis=1)
>>> print(d)
[[ 1, 2, 5, 6, 9, 10],
[ 3, 4, 7, 8, 11, 12]]
上面的代码中,我们使用了numpy模块中的array()函数创建了三个二维数组a、b和c,然后使用numpy.concatenate()函数将它们沿着第二个维度(即列)进行合并,得到了一个新的二维数组d。
四、numpy.stack()函数
在numpy模块中还有一个函数——numpy.stack(),可以将多个数组在某个新轴向上进行堆叠,也可以实现多个数组的合并。
1、numpy.stack()函数的用法
numpy.stack()函数的参数和numpy.concatenate()函数类似,不同的是它可以在新的轴向上进行堆叠。具体使用如下:
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> c = np.array([7, 8, 9])
>>> d = np.stack((a, b, c), axis=1)
>>> print(d)
[[1, 4, 7],
[2, 5, 8],
[3, 6, 9]]
上面的代码中,我们使用了numpy.stack()函数将三个一维数组a、b和c沿着第二个轴向进行堆叠,得到了一个新的二维数组d。
2、numpy.stack()函数更多示例
2.1 沿着不同轴向堆叠
除了上面的示例外,numpy.stack()函数还可以沿着不同轴向堆叠。具体使用如下:
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> c = np.array([7, 8, 9])
>>> d = np.stack((a, b, c), axis=0)
>>> print(d)
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
上面的代码中,我们使用了numpy.stack()函数将三个一维数组a、b和c沿着第一个轴向进行堆叠,得到了一个新的二维数组d。
2.2 使用numpy.stack()函数实现多个数组的合并
与numpy.concatenate()函数类似,numpy.stack()函数也可以理解成将多个数组按照一定的方式合并为一个更大的数组。具体使用如下:
>>> a = np.array([1, 2, 3])
>>> b = np.array([4, 5, 6])
>>> c = np.array([7, 8, 9])
>>> d = np.stack((a, b, c))
>>> print(d)
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
上面的代码中,我们使用了numpy.stack()函数将三个一维数组a、b和c进行堆叠,并且没有指定轴向,默认沿着第一个维度进行堆叠,得到了一个新的二维数组d。
五、总结
Python中数组操作函数可以让我们在处理多个数组时提高效率和代码的简洁程度。使用“+”符号、extend()方法、*号等方法可以实现数组的合并,但是使用时需要注意一些限制。而在numpy模块中,有numpy.concatenate()和numpy.stack()函数,可以实现更加高效、灵活和多样化的数组合并操作。