gpt4 book ai didi

python - 值相等时的 numpy argmax

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

我有一个 numpy 矩阵,我想获取每一行中最大值的索引。例如

[[1,2,3],[1,3,2],[3,2,1]]

会回来

[0,1,2]

但是,当每行中的最大值超过 1 个时,numpy.argmax 将只返回最小的索引。例如

[[0,0,0],[0,0,0],[0,0,0]]

会回来

[0,0,0]

我可以将默认值(最小索引)更改为其他一些值吗?例如。当最大值相等时,返回1None,这样上面的结果就是

[1,1,1]
or
[None, None, None]

如果我能在 TensorFlow 中做到这一点,那就更好了。

谢谢!

最佳答案

您可以使用 np.partition 两次找到两个最大值并检查它们是否相等,然后将其用作 np.where 中的掩码来设置默认值:

In [228]: a = np.array([[1, 2, 3, 2], [3, 1, 3, 2], [3, 5, 2, 1]])

In [229]: twomax = np.partition(a, -2)[:, -2:].T

In [230]: default = -1

In [231]: argmax = np.where(twomax[0] != twomax[1], np.argmax(a, -1), default)

In [232]: argmax
Out[232]: array([ 2, -1, 1])

关于python - 值相等时的 numpy argmax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51318081/

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