如何连接两个二维数字NumPy数组?

2023-08-11 15:21:36 浏览数 (1)

Python 是一种通用且功能强大的编程语言,广泛用于科学计算、数据分析和机器学习。使Python对这些领域如此有用的关键库之一是NumPy。NumPy提供了强大的工具来处理数组,这对于许多科学计算任务至关重要。在本文中,我们将探讨如何使用 Python 连接两个二维 NumPy 数组。

如果您曾经在 Python 中使用过数组,您就会知道它们对于存储和操作大量数据是多么有用。但是,您可能需要将两个数组合并为一个更大的数组。这就是数组串联的用武之地。在本教程中,我们将向您展示如何使用两种不同的方法在 Python 中连接两个二维 NumPy 数组。所以让我们开始吧!

如何连接两个二维数字数组?

串联是将两个或多个字符串、数组或其他数据结构组合成单个实体的过程。它涉及将两个或多个字符串或数组的内容连接在一起以创建新的字符串或数组。

有多种方法可以连接两个二维 NumPy 数组。让我们一一深入研究。

方法 1:使用 np.concatenate()

np.concatenate() 函数将数组序列作为其第一个参数,该参数可以是元组、列表或任何包含要连接的数组的可迭代对象。我们还可以指定要连接数组的轴,可以是 0(用于垂直连接)或 1(用于水平连接)。

下面是使用 np.concatenate() 水平连接两个二维 NumPy 数组的示例:

代码语言:javascript复制
import numpy as np # create two 2D arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # concatenate horizontally arr3 = np.concatenate((arr1, arr2), axis=1) # print the concatenated array print(arr3)

输出

代码语言:javascript复制
[[1 2 5 6]  [3 4 7 8 ]]

在上面的例子中,我们首先使用 np.array() 函数创建两个 2D 数组 arr1 和 arr2。然后,我们使用 np.concatenate() 沿第二个轴(axis=1)水平连接这些数组。生成的串联数组 arr3 包含水平排列的 arr1 和 arr2 中的所有元素。请注意,我们指定 axis=1 来水平连接数组,并且生成的串联数组与输入数组具有相同的行数。

我们还可以使用 np.concatenate() 通过指定 axis=2 来垂直连接两个二维 NumPy 数组。下面是一个示例:

代码语言:javascript复制
import numpy as np # create two 2D arrays arr1 = np.array([[1, 2], [3, 4]]) arr2 = np.array([[5, 6], [7, 8]]) # concatenate vertically arr3 = np.concatenate((arr1, arr2), axis=0) # print the concatenated array print(arr3)

输出

代码语言:javascript复制
[[1 2]  [3 4]  [5 6]  [7 8]]

在上面的代码示例中,我们再次使用 np.array() 函数创建了两个 2D 数组 arr1 和 arr2,然后使用 np.concatenate() 沿第一个轴垂直连接这些数组 (axis=0)。生成的串联数组 arr3 包含来自 arr1 和 arr2 的所有元素,这些元素垂直排列。请注意,我们指定 axis=0 来垂直连接数组,并且生成的串联数组具有与输入数组相同的列数。

方法 2:使用 np.vstack() 和 np.hstack()

除了 np.concatenate() 函数之外,NumPy 还提供了另外两个可用于连接二维数组的函数:np.vstack() 和 np.hstack()。这些函数分别专门设计用于垂直和水平串联。

np.vstack():此函数可用于垂直堆叠两个二维数组。它接受数组元组作为输入,并返回一个新数组,其中输入数组垂直堆叠。结果数组的形状为 (m n, k),其中 m 和 n 是输入数组中的行数,k 是列数。

下面是一个使用 np.vstack() 方法连接两个二维数组的示例:

代码语言:javascript复制
import numpy as np # Creating two 2-dimensional arrays array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6], [7, 8]]) # Stacking the two arrays vertically result = np.vstack((array1, array2)) print("Array 1:") print(array1) print("nArray 2:") print(array2) print("nResult after vertical concatenation:") print(result)

输出

代码语言:javascript复制
Array 1: [[1 2]  [3 4]] Array 2: [[5 6]  [7 8]] Result after vertical concatenation: [[1 2]  [3 4]  [5 6]  [7 8]]

正如你在上面看到的,生成的串联数组结果将有一个形状 (4, 2),数组 1 的元素首先出现,然后是 array2 的元素。np.vstack() 函数垂直堆叠数组,这意味着数组一个放在另一个之上。

np.hstack():此函数可用于水平堆叠两个二维数组。它接受数组元组作为输入,并返回一个新数组,其中输入数组水平堆叠。结果数组的形状为 (m, n p),其中 m 是输入数组中的行数,n 和 p 分别是第一个和第二个数组中的列数。

下面是一个演示 np.hstack() 用法的示例:

代码语言:javascript复制
import numpy as np # Creating two 2-dimensional arrays array1 = np.array([[1, 2], [3, 4]]) array2 = np.array([[5, 6], [7, 8]]) # Stacking the two arrays horizontally result = np.hstack((array1, array2)) print("Array 1:") print(array1) print("nArray 2:") print(array2) print("nResult after horizontal concatenation:") print(result)

输出

代码语言:javascript复制
Array 1: [[1 2]  [3 4]] Array 2: [[5 6]  [7 8]] Result after horizontal concatenation: [[1 2 5 6]  [3 4 7 8]]

正如您在输出中观察到的那样,生成的级联数组也是一个形状为 (2, 2) 的二维 NumPy 数组。串联数组的前两列包含 'array4' 的元素,最后两列包含 'array1' 的元素。

结论

在本文中,我们探讨了使用 Numpy − np.concatenate() 和 np.vstack()/np.hstack() 连接两个二维数组的两种方法。我们提供了每种方法的示例,演示了如何使用这些函数水平和垂直连接两个二维数组。这些方法对于在科学计算、数据分析和机器学习任务中组合数组和处理大量数据非常有用。

0 人点赞