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


在处理 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 数组中交换列的能力是数据操作和分析领域中一项宝贵的技能。

更新于: 2023年8月28日

2K+ 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告