如何交换给定 NumPy 数组的列?

pythonserver side programmingprogramming

在操作 NumPy 数组时,可能存在需要交换两列位置的情况。在本文中,我们深入研究了四种不同的技术来交换给定 NumPy 数组中的列:利用高级索引、采用 NumPy 索引、利用 np.swapaxes 函数以及利用直接赋值。我们将通过示例来理解这些方法。

方法 1:利用高级索引

释放高级索引的潜力,您可以重塑 NumPy 集群内的测量过程,这在很大程度上要归功于精心策划的列索引系统。

示例

在下面的示例中,我们生成一个 NumPy 数组并使用高级索引来交换第 1 列和第 2 列。

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array[:, [1, 2]] = array[:, [2, 1]]
print(array)

输出

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

方法 2:使用 NumPy 索引

NumPy 索引允许您通过指定列的索引来创建具有所需列序列的新数组。

示例

在下图中,我们构造一个 NumPy 数组并使用 NumPy 索引的强大功能来交换第 1 列和第 2 列。

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array = array[:, [0, 2, 1]]
print(array)

输出

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

方法 3:利用 np.swapaxes 函数

np.swapaxes 函数可用于交换 NumPy 数组的两个轴。要交换列,您可以先转置数组,交换行,然后将其转置回来。

示例

在以下示例中,我们生成一个 NumPy 数组并利用 np.swapaxes 函数交换第 1 列和第 2 列。

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
array = array.T
array[[1, 2]] = array[[2, 1]]
array = array.T
print(array)

输出

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

方法 4:利用直接赋值

可以通过创建其中一列的临时副本来使用直接赋值来交换 NumPy 数组中的列。

示例

在下面的示例中,我们生成一个 NumPy 数组并利用直接赋值来交换第 1 列和第 2 列。

import numpy as np

array = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
temp = array[:, 1].copy()
array[:, 1] = array[:, 2]
array[:, 2] = temp
print(array)

输出

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

结论

在本文中,我们探讨了在 NumPy 数组中交换列的不同方法。我们讨论了高级索引、NumPy 索引、np.swapaxes 函数和直接赋值。每种方法都为您提供了一种简单而高效的交换列的方法,以满足您的特定要求。通过吸收语法并仔细阅读这些技术的示例,您将能够挑选最适合您的数据处理工作的方法。

最终,在 NumPy 数组中打乱列的能力体现为数据处理和分析领域的宝贵灵巧性。


相关文章