如何排序numpy数组的第一行并同步调整第二行的元素顺序
实现方法
核心思路是通过numpy.argsort()获取第一行排序后的位置索引,再用该索引对整个数组的列做同步重排,代码示例如下:
import numpy as np # 定义原始数组 array = np.array([[3,5,4,2,1,6,8],[23,44,52,1,23,22,58]]) # 获取第一行从小到大排序对应的原位置索引 sorted_idx = array[0].argsort() # 按索引重排所有列,两行同步调整 new_array = array[:, sorted_idx]
运行后得到的new_array输出结果如下,和你需要的效果完全一致:
array([[ 1, 2, 3, 4, 5, 6, 8], [23, 1, 23, 52, 44, 22, 58]])
逻辑说明
array[0].argsort()返回的是第一行元素排序后,每个元素在原数组里的位置索引,本次示例中得到的索引为[4, 3, 0, 2, 1, 5, 6]array[:, sorted_idx]表示保留数组的所有行,仅按照sorted_idx的顺序重新排列列,自然就能实现两行位置同步调整的需求。
内容的提问来源于stack exchange,提问作者phys_birthdaycake
相关产品推荐
相关产品推荐

