python - Numpy 数组 : row/column wise argmax with random ties

标签 python arrays numpy random argmax

这是我在 Python 2.7 中尝试使用 Numpy 做的事情。假设我有一个数组 a 定义如下:

a = np.array([[1,3,3],[4,5,6],[7,8,1]])

我可以执行 a.argmax(0)a.argmax(1) 来获取行/列明智的 argmax:

a.argmax(0)
Out[329]: array([2, 2, 1], dtype=int64)
a.argmax(1)
Out[330]: array([1, 2, 1], dtype=int64)

但是,当 a 的第一行出现平局时,我希望在平局之间随机决定 argmax(默认情况下,每当出现平局时,Numpy 都会返回第一个元素在 argmax 或 argmin 中)。

去年,有人提出了一个关于随机解决 Numpy argmax/argmin 关系的问题:Select One Element in Each Row of a Numpy Array by Column Indices

但是,题目针对的是一维数组。在那里,投票最多的答案对此很有效。还有第二个答案也试图解决多维数组的问题,但不起作用 - 即它不返回,对于每一行/列,最大值的索引与随机解决的关系。

既然我正在处理大数组,那么执行此操作的最有效方法是什么?

最佳答案

一种简单的方法是在开始时将一个小的随机数添加到所有值中,因此您的数据将如下所示:

a = np.array([[1.1827,3.1734,3.9187],[4.8172,5.7101,6.9182],[7.1834,8.5012,1.9818]])

这可以通过 a = a + np.random.random(a.shape) 来完成。

如果您稍后需要取回原始值,您可以执行 a.astype(int) 来删除小数部分。

关于python - Numpy 数组 : row/column wise argmax with random ties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51914697/

相关文章:

python - 为什么 python 中的对象是 'instance' 类型?

python - Pandas 中奇怪的数据操作

javascript - 嵌套数组上的递归过滤器

python - 如何使用 Lambda 将 AWS CodeCommit 推送到 S3?

python - django 休息框架 :getting NotImplementedError

javascript - 将两个数组与对象合并

c - 打印在另一个带有指针的函数中设置的数组

python - 声明 basinhopping 优化的约束

python - 如何让 numpy 数组的 FFT 工作?

python - 训练/测试拆分 Python