要使用特定的列索引对numpy 2D数组进行降序或升序排序,可以使用numpy的argsort函数。
首先,导入numpy库:
import numpy as np
然后,创建一个2D数组:
arr = np.array([[3, 2, 1],
[6, 5, 4],
[9, 8, 7]])
接下来,使用argsort函数对指定列索引进行排序。例如,对第一列进行升序排序:
sorted_indices = np.argsort(arr[:, 0])
sorted_arr = arr[sorted_indices]
这将返回一个按第一列升序排序的新数组sorted_arr。
如果要进行降序排序,可以使用::-1切片操作来反转排序后的索引:
sorted_indices = np.argsort(arr[:, 0])[::-1]
sorted_arr = arr[sorted_indices]
这将返回一个按第一列降序排序的新数组sorted_arr。
对于多列排序,可以在argsort函数中传递多个列索引。例如,对第一列进行升序排序,然后对第二列进行降序排序:
sorted_indices = np.lexsort((arr[:, 1], arr[:, 0]))
sorted_arr = arr[sorted_indices]
这将返回一个先按第一列升序排序,再按第二列降序排序的新数组sorted_arr。
需要注意的是,numpy的argsort函数返回的是排序后的索引,而不是排序后的数组本身。因此,我们需要使用这些索引来获取排序后的数组。
希望这个回答对您有帮助!如果您需要更多关于numpy或其他云计算领域的问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云