我正在尝试获取numpy数组中的前N个最大值,如果值相等,则使用随机抢七。
我可以按如下方式获取前N个最大值(从此处获取),但是此代码始终返回第一个“ 4”(即索引1)。有没有办法让它在4s中随机选择?
>>> a
array([9, 4, 4, 3, 3, 9, 0, 4, 6, 0])
>>> ind = np.argpartition(a, -4)[-4:]
>>> ind
array([1, 5, 8, 0])
您可以在排序之前将顺序随机化,然后重新应用相同的排列:
In [11]: p = np.random.permutation(len(a))
In [12]: p[np.argpartition(a[p], -4)[-4:]]
Out[12]: array([7, 8, 0, 5])
注意:如果再次运行此命令,则可能会得到另一个解决方案:
In [13]: p = np.random.permutation(len(a))
In [14]: p[np.argpartition(a[p], -4)[-4:]]
Out[14]: array([1, 8, 0, 5])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句