HOWTO · NumPy

压缩 NumPy 数组

在 Python 中,可以使用三种主要方法将两个一维 NumPy 数组压缩为单个二维 NumPy 数组,即 list(zip()) 方法、numpy.stack() 函数和 numpy.column_stack() 函数。

本页内容

本教程将介绍在 Python 中将两个 1D NumPy 数组压缩为单个 2D NumPy 数组的方法。

带有 list(zip()) 函数的 NumPy Zip

如果我们有两个一维数组并且想将它们压缩到一个二维数组中,我们可以使用 Python 中的 list(zip()) 函数。这种方法涉及将数组压缩到一个列表中。list(zip(a,b)) 函数将数组 ab 作为参数并返回一个列表。然后我们可以使用 numpy.array() 函数将压缩列表转换为数组。请参考以下代码示例。

import numpy as np

a = np.array([1, 3, 5, 7])
b = np.array([2, 4, 6, 8])

c = np.array(list(zip(a, b)))

print(c)

输出:

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

我们首先使用 np.array() 函数创建了两个一维数组 ab,并使用 np.array(list(zip(a,b))) 函数将它们压缩在一起。

这种方法效率不高,因为我们必须在数组和列表之间进行转换。

使用 numpy.stack() 函数的 NumPy Zip

我们还可以使用 numpy.stack() 函数来实现与前一个示例相同的目标。这种方法比以前的方法更有效,因为没有执行类型转换。numpy.stack() 函数 用于根据指定的轴连接两个或多个数组。我们可以指定 axis 参数等于 1 以获得与前一个示例类似的结果。请参考以下代码示例。

import numpy as np

a = np.array([1, 2, 3, 4, 5])
b = np.array([6, 7, 8, 9, 10])

c = np.stack((a, b), axis=1)

print(c)

输出:

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

我们首先使用 np.array() 函数创建了两个一维数组 ab,并使用 np.stack((a,b), axis=1) 函数将它们压缩在一起。

使用 numpy.column_stack() 函数的 NumPy Zip

numpy.column_stack() 函数是另一种方法,可用于在 Python 中将两个一维数组压缩为单个二维数组。numpy.column_stack() 函数用于将两个或多个一维数组作为列连接到单个二维数组中。我们不必为此方法指定任何轴参数。请参考以下代码示例。

import numpy as np

a = np.array([1, 3, 5, 7])
b = np.array([2, 4, 6, 8])

d = np.column_stack((a, b))

print(d)

输出:

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

我们首先使用 np.array() 函数创建了两个一维数组 ab,并使用 np.column_stack(a,b) 函数将它们压缩在一起。

与前两种方法相比,这种方法是最好的。因为没有类型转换,我们不必在这种方法中指定任何轴。