压缩 NumPy 数组

Muhammad Maisam Abbas 2023年1月30日
  1. 带有 list(zip()) 函数的 NumPy Zip
  2. 使用 numpy.stack() 函数的 NumPy Zip
  3. 使用 numpy.column_stack() 函数的 NumPy Zip
压缩 NumPy 数组

本教程将介绍在 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) 函数将它们压缩在一起。

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

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn