如何交换给定 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 数组中打乱列的能力体现为数据处理和分析领域的宝贵灵巧性。