编写Python代码,使用NumPy按第n列对数组进行排序?
在本文中,我们将向您展示如何在 Python 中按升序和降序对 NumPy 数组的第 n 列进行排序。
NumPy 是一个 Python 库,旨在高效地处理 Python 中的数组。它速度快、易于学习且存储效率高。它还改进了数据处理的方式。在 NumPy 中,我们可以生成一个 n 维数组。要使用 NumPy,我们只需将其导入到我们的程序中,然后我们就可以轻松地在代码中使用 NumPy 的功能。
方法 1. 按第 1 列对 NumPy 数组排序
在此方法中,我们使用随机模块生成一个随机 NumPy 数组,并按升序(默认)对数组的第 1 列进行排序。
算法(步骤)
以下是执行所需任务的算法/步骤:
使用 import 关键字,导入带有别名(np)的 numpy 模块。
使用 random.randint() 方法(返回指定范围内的随机数)创建一个形状为 6x6 的 NumPy 数组,其中包含 0 到 19 之间的任意随机数。
打印输入数组。
使用 argsort() 函数(沿着指定的轴使用 kind 关键字提供的算法执行间接排序。它返回将对数组进行排序的索引),按第 1 列对输入数组进行排序,并打印按第 1 列升序排序的结果数组。
示例
以下程序使用 argsort() 函数按升序对 NumPy 数组的第 1 列进行排序并返回结果:
# importing NumPy module with an alias name import numpy as np # creating a NumPy array of any random numbers from 0 to 19 of shape 6*6 inputArray = np.random.randint(0,20,(5,5)) # printing the input array print("The input random array is:") print(inputArray) # using argsort() function, to sort the input array by the 1st column print("Sorting the input array by the 1st column:") # Here in [:,1], ':' specifies all the rows and 1 specifies we need to sort by 1st column print(inputArray[inputArray[:,1].argsort()])
输出
执行上述程序后,将生成以下输出:
The input random array is: [[ 8 16 7 5 13] [ 5 8 6 0 2] [11 7 3 3 6] [ 5 3 15 7 5] [15 3 9 14 3]] Sorting the input array by the 1st column: [[ 5 3 15 7 5] [15 3 9 14 3] [11 7 3 3 6] [ 5 8 6 0 2] [ 8 16 7 5 13]]
方法 2. 按第 n 列对 NumPy 数组排序
在此方法中,我们使用随机模块生成一个随机 NumPy 数组,并按升序(默认)对数组的给定 第 n 列进行排序。
算法(步骤)
以下是执行所需任务的算法/步骤:
使用 random.randint() 方法创建一个形状为 4x4 的 NumPy 数组,其中包含 0 到 99 之间的任意随机数,并打印输入数组。
输入 n 值并创建一个变量来存储它。
使用 argsort() 函数,按第 n 列对输入数组进行排序,并打印按第 1 列升序排序的结果数组。
示例
以下程序使用 argsort() 函数按升序对 NumPy 数组的给定第 n 列进行排序并返回结果:
# importing NumPy module with an alias name import numpy as np # creating a NumPy array of any random numbers from 0 to 100 of shape 4x4 inputArray = np.random.randint(0,100,(4,4)) # printing the input array print("The input random array is:") print(inputArray) # entering the value of n n = 2 # using argsort() function, to sort the input array by the nth column # here we are sorting the nth column of the array print("Sorting the input array by the",n,"column:") # Here in [:,n], ':' specifies all the rows and n specifies we need to sort by nth column print(inputArray[inputArray[:,n].argsort()])
输出
执行上述程序后,将生成以下输出:
The input random array is: [[32 5 68 67] [ 7 7 12 63] [49 49 10 15] [96 5 93 29]] Sorting the input array by the 2 column: [[49 49 10 15] [ 7 7 12 63] [32 5 68 67] [96 5 93 29]]
方法 3. 按第 n 列的逆序对 NumPy 数组排序
在此方法中,我们使用随机模块生成一个随机 NumPy 数组,并通过将其切片为逆序来按降序对数组的给定第 n 列进行排序。
示例
以下程序使用 argsort() 函数按降序对 NumPy 数组的给定第 n 列进行排序并返回结果:
# importing numpy module with an alias name import numpy as np # creating a numpy array of any random numbers from 0 to 100 of shape 5*5 inputArray = np.random.randint(0,100,(5,5)) # printing the input array print("The input random array is:") print(inputArray) # entering the value of n n = 3 print("Sorting the input array by the",n,"column:") # Here in [:,n], ':' specifies all the rows and n specifies we need to sort by nth column # [::-1] slices the result in reverse order(descending order) print(inputArray[inputArray[:,n].argsort()[::-1]])
输出
执行上述程序后,将生成以下输出:
The input random array is: [[47 6 62 53 50] [ 5 30 13 10 33] [43 93 57 91 91] [84 40 21 55 9] [76 89 85 3 4]] Sorting the input array by the 3 column: [[43 93 57 91 91] [84 40 21 55 9] [47 6 62 53 50] [ 5 30 13 10 33] [76 89 85 3 4]]
结论
在本文中,我们学习了如何在 NumPy 中按第 n 列对数组进行排序,以及如何使用切片按降序对数组进行排序。