python - 使用评估函数对 np.array x 进行排序
问题描述
我有这个 2D numpy 数组,它看起来像这样:
[[ 7.13617384e+00 3.93455820e+00 8.34862014e+00 1.42756162e+03]
[ 2.93579791e+00 4.83915611e+00 -3.41362211e-01 1.71145016e+03]
...
[ 9.58016886e+00 2.96627154e+00 -1.43432831e+00 2.44785312e+03]
[-1.32142476e+00 9.51850265e+00 1.77833164e+01 1.66931544e+03]]
有一个评估函数,它采用每个数组的 4 个值并给它一个值,越低越好。现在我想根据评估函数生成的最低值对原始数组进行排序。代码看起来像这样:
x = np.random.uniform(low=bounds_min, high=bounds_max, size=(pop_size, 4))
f = ea.evaluate(x)
sorted_f = np.sort(f)
np.argsort(x, order(sorted_f)
解决方案
您可以使用 argsort 来获取值的顺序,f
然后使用这些索引对原始数组进行排序x
x = np.random.uniform(low=bounds_min, high=bounds_max, size=(pop_size, 4))
f = ea.evaluate(x)
idx = np.argsort(f)
f = f[idx] # assuming f is an array
x = x[idx]
推荐阅读
- reactjs - 如何在 SSR 项目中生成唯一 ID (Next.js)
- javascript - 隐藏和显示表格中的行
- python - 用 sympy 在 python 中求解方程
- java - 如何使用 thymeleaf th:each 将超链接添加到表的列?
- c++ - 如何过滤出结果以仅获取输出结果中的文件名linux在c ++ 98中
- apache-spark - 在 Hive CLI 上执行“alter table table_name drop partition(part_column < value)”时出现空指针错误
- c++ - 在 C++ 中抛出 'std::out_of_range' 的实例后调用终止
- actionscript-3 - (actionscript 3) 如何创建模拟特定键盘输入的虚拟键
- c++ - 为 macOS-x86_64 构建,但尝试链接为 macOS-arm64 构建的文件
- ios - SwiftUI:如何让用户通过选项“light”、“dark”和“system”实时设置应用程序外观?