gpt4 book ai didi

python - 使用 argsort 后如何取回订单?

转载 作者:太空宇宙 更新时间:2023-11-04 10:16:28 27 4
gpt4 key购买 nike

所以我有一个数组,例如 [-0.7, -3.7, -2.1, -5.8, -1.2 ]这些特定数字对应于按顺序排列的标签:比如 0.7 对应于标签 201,3.7 对应于标签 202 等等。

正常排序时,我收到 [-5.8, -3.7, -2.1, -1.2, -0.7]。我有兴趣从中挑选出前 3 个值,但在排序时,我会忘记标签。现在要按顺序对它们进行排序,我使用 np.argsort。这给了我 [1,2,0]。这告诉我 4 的值概率低,而 0 的值概率高。

我的问题是关于 argsort,我怎样才能取回我的映射?我如何知道我的标签现在在哪里?有什么方法可以在使用 argsort 时跟踪它们?

最佳答案

有点不清楚“我的标签现在在哪里”是什么意思。

但也许 argsort 的使用会有所帮助

In [163]: values=np.array([-0.7, -3.7, -2.1, -5.8, -1.2 ])

同时制作一个标签数组:

In [164]: labels=np.array([200,201,202,203,204])

argsort 给出一个索引数组,可用于重新排序 valueslabels。请注意,此应用程序不会更改原始数组。

In [165]: ind=np.argsort(values)
In [166]: ind
Out[166]: array([3, 1, 2, 4, 0], dtype=int32)
In [167]: values[ind]
Out[167]: array([-5.8, -3.7, -2.1, -1.2, -0.7])
In [168]: labels[ind]
Out[168]: array([203, 201, 202, 204, 200])

如果我将 argsort 应用于 ind,我会得到另一组索引,让我可以将值恢复为原始顺序。

In [169]: ind1=np.argsort(ind)
In [170]: ind1
Out[170]: array([4, 1, 2, 0, 3], dtype=int32)
In [171]: labels[ind][ind1]
Out[171]: array([200, 201, 202, 203, 204])
In [172]:

我想您已经在使用这样的表达式来获取前 3 个值

In [180]: ind[:3]
Out[180]: array([3, 1, 2], dtype=int32) # location of the top 3
In [181]: values[ind[:3]]
Out[181]: array([-5.8, -3.7, -2.1]) # the top 3
In [182]: labels[ind[:3]]
Out[182]: array([203, 201, 202]) # and their labels

关于python - 使用 argsort 后如何取回订单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35136244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com