Numpy数组合并
在本文中,我们将介绍如何使用NumPy将数据存储在数组中,并且合并数组以便更好地操作。
阅读更多:Numpy 教程
NumPy数组
NumPy是一个Python科学计算库,它提供了高效处理多维数组的工具。NumPy的数组不同于Python列表,它能够更高效地存储和操作大型数据集合。我们可以使用NumPy创建不同形状和大小的数组,并进行基本的数学运算。
下面是一个简单的示例代码,演示如何使用NumPy创建一个二维数组:
import numpy as np
arr = np.array([[1, 2], [3, 4]])
print(arr)
输出结果:
[[1 2]
[3 4]]
我们可以使用.shape
属性查看数组的形状(即维数和每个维度的大小):
print(arr.shape)
输出结果:
(2, 2)
数组的合并
在有时,我们需要将不同的NumPy数组合并到一起以便进行更强大的数据操作。那么如何合并数个NumPy数组呢?这里介绍以下几种方法:
numpy.concatenate()
方法
首先,可以使用numpy.concatenate()
函数将两个或多个数组沿着指定轴合并。合并后的新数组的形状将由指定轴的维度和每个维度的大小决定。例如,一个形状为(3, 2)
和另一个形状为(2, 2)
的二维数组在沿着axis=0
的轴合并时,将得到一个形状为(5, 2)
的新数组。
下面的示例演示了如何使用numpy.concatenate()
方法合并两个一维数组:
import numpy as np
arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])
new_arr = np.concatenate((arr1, arr2))
print(new_arr)
输出结果:
[1 2 3 4 5 6]
可以看到,concatenate()
方法将两个一维数组顺序合并为一个新的一维数组。
这里是一个合并二维数组的示例:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
new_arr = np.concatenate((arr1, arr2), axis=0)
print(new_arr)
输出结果:
[[1 2]
[3 4]
[5 6]
[7 8]]
这里我们指定axis=0
,表示沿着行方向(即第一个轴)合并两个二维数组。
也可以沿着列方向合并两个二维数组:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
new_arr = np.concatenate((arr1, arr2), axis=1)
print(new_arr)
输出结果:
[[1 2 5 6]
[3 4 7 8]]
这里我们指定axis=1
,表示沿着列方向(即第二个轴)合并两个二维数组。
numpy.stack()
方法
另外,我们可以使用numpy.stack()
函数。该函数可以将一组相同形状的数组沿着新的轴合并为一个新的数组。
下面的示例演示了如何使用numpy.stack()
方法将两个二维数组沿着第3个轴合并成为一个新的三维数组:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
new_arr = np.stack((arr1, arr2), axis=2)
print(new_arr)
输出结果:
[[[1 5]
[2 6]]
[[3 7]
[4 8]]]
可以将该新轴视为表示要堆叠的数组的数字总数。
拼接(hstack()
和vstack()
)方法
除了上述情况,合并数组时,有时我们不需要合并在新的轴上,只是沿着现有的轴合并。这时,可以使用numpy.hstack()
和numpy.vstack()
函数。这两个函数除了在axis
参数上有些不同之外,与numpy.concatenate()
函数的用法相同。
下面的示例演示了如何使用numpy.hstack()
方法合并两个二维数组:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
new_arr = np.hstack((arr1, arr2))
print(new_arr)
输出结果:
[[1 2 5 6]
[3 4 7 8]]
可以看到,hstack()
方法将两个二维数组沿着列方向(即第二个轴)合并。
同样的用法,我们也可以使用numpy.vstack
函数实现沿着行方向的合并:
import numpy as np
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])
new_arr = np.vstack((arr1, arr2))
print(new_arr)
输出结果:
[[1 2]
[3 4]
[5 6]
[7 8]]
可以看出,vstack()
方法将两个二维数组沿着行方向(即第一个轴)合并。
总结
NumPy提供了多种方法将不同的数组合并到一起以便进行更强大的数据操作。我们可以使用numpy.concatenate()
方法将不同形状的数组沿着指定轴合并到一起,使用numpy.stack()
函数将一组相同形状的数组沿着新的轴合并为一个新的数组,而使用numpy.hstack()
和numpy.vstack()
函数则可以实现沿着现有的轴进行合并。这使得我们可以轻松地将数据准备好用于机器学习或其他数据科学应用。