You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中根据另一数组的值对NumPy数组重新排序?

实现按另一个NumPy数组的值排序

当然可以实现,而且用NumPy的内置方法比你尝试的循环写法更简洁高效。先理清楚你的需求:根据value_array的值从大到小排序,提取对应位置的initial_array元素,对应逻辑如下:

完整实现代码

import numpy as np

# 定义你的数组
initial_array = np.array([1, 6, 3, 4])
value_array = np.array([10, 2, 3, 15])

# 获取value_array降序排序的索引
sorted_indices = np.argsort(value_array)[::-1]

# 用索引提取initial_array的对应元素
output_array = initial_array[sorted_indices]

print(output_array)  # 输出: [4 1 3 6]

步骤解释

  1. np.argsort(value_array):返回value_array升序排序后的元素索引,这里会得到[1, 2, 0, 3](对应value_array里的2、3、10、15)
  2. [::-1]:把索引倒序,得到降序对应的索引[3, 0, 2, 1](对应value_array里的15、10、3、2)
  3. initial_array[sorted_indices]:用排序后的索引提取initial_array的元素,直接得到预期结果

如果你想用循环实现(不推荐大数组)

如果坚持用循环思路,也可以通过配对元素再排序的方式实现:

import numpy as np

initial_array = np.array([1, 6, 3, 4])
value_array = np.array([10, 2, 3, 15])

# 把两个数组的元素配对
pairs = list(zip(initial_array, value_array))
# 按value值降序排序
pairs_sorted = sorted(pairs, key=lambda x: x[1], reverse=True)
# 提取排序后的initial元素
output_array = np.array([item[0] for item in pairs_sorted])

print(output_array)  # 输出: [4 1 3 6]

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:01:00