bli*_*lop 2 python arrays random numpy argmax
这是我在 Python 2.7 中尝试使用 Numpy 做的事情。a假设我有一个由以下内容定义的数组:
a = np.array([[1,3,3],[4,5,6],[7,8,1]])
Run Code Online (Sandbox Code Playgroud)
我可以做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)
Run Code Online (Sandbox Code Playgroud)
但是,当存在像a第一行那样的平局时,我希望在平局之间随机决定 argmax (默认情况下,只要 argmax 或 argmin 中出现平局,Numpy 就会返回第一个元素)。
去年,有人提出了随机解决 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]])
Run Code Online (Sandbox Code Playgroud)
这可以通过 来完成a = a + np.random.random(a.shape)。
如果稍后需要恢复原始值,可以a.astype(int)删除小数部分。
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |