【问题标题】:Sorting np.array x with evaluating function使用评估函数对 np.array x 进行排序
【发布时间】:2021-07-25 09:31:38
【问题描述】:

我有这个 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)

【问题讨论】:

    标签: python arrays numpy sorting


    【解决方案1】:

    您可以使用 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-05
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多