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

pythonnumpyprogramming

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

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

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

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

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

方法 1:使用 np.concatenate()

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

示例

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

import numpy as np

# 创建两个二维数组
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

# 水平连接
arr3 = np.concatenate((arr1, arr2), axis=1)

# 打印连接的结果array
print(arr3)

输出

[[1 2 5 6]
[3 4 7 8 ]]

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

示例

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

import numpy as np

# 创建两个二维数组
arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

# 垂直连接
arr3 = np.concatenate((arr1, arr2), axis=0)

# 打印连接后的数组
print(arr3)

输出

[[1 2]
[3 4]
[5 6]
[7 8]]

在上面的代码示例中,我们再次使用 np.array() 函数创建了两个二维数组 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() 方法连接两个二维数组的示例:

import numpy as np

# 创建两个二维数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# 垂直堆叠两个数组
result = np.vstack((array1, array2))

print("Array 1:")
print(array1)

print("\nArray 2:")
print(array2)

print("\n垂直连接后的结果:")
print(result)

输出

数组 1:
[[1 2]
[3 4]]

数组 2:
[[5 6]
[7 8]]

垂直连接后的结果:
[[1 2]
[3 4]
[5 6]
[7 8]]

如上所示,生成的连接数组结果的形状为 (4, 2),其中 array1 的元素首先出现,然后是 array2 的元素。np.vstack() 函数垂直堆叠数组,这意味着数组一个在另一个之上。

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

示例

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

import numpy as np

# 创建两个二维数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# 水平堆叠两个数组
result = np.hstack((array1, array2))

print("Array 1:")
print(array1)

print("\nArray 2:")
print(array2)

print("\n水平连接后的结果:")
print(result)

输出

数组 1:
[[1 2]
[3 4]]

数组 2:
[[5 6]
[7 8]]

水平连接后的结果:
[[1 2 5 6]
[3 4 7 8]]

正如您在输出中看到的,生成的连接数组也是一个二维 NumPy 数组,形状为 (2, 4)。连接数组的前两列包含"array1"的元素,后两列包含"array2"的元素。

结论

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


相关文章