在一个 2D 的 NumPy 数组中,每个列可能会有多个最大值。我想找到每个列最大值对应的行索引,不能重复使用行索引。
以下是一个示例,展示了为什么
我希望得到这个例子的结果:
在这种情况下,没有一个唯一的最大值列。我会满足于以下任何一种答案:
在这种情况下,我会对这些答案的任意一个表示满意:
以下是一个示例,展示了为什么
np.argmax
不能用:import numpy as np
a = np.array([[1, 1, 0],
[1, 0, 1],
[0, 0, 1]])
ind = np.argmax(a, axis=0)
print(ind)
输出:
[0 0 2]
我希望得到这个例子的结果:
[1, 0, 2]
。
也就是说:
- 第二列的行索引必须为 0
- 这意味着第一列的行索引必须为 1
- 而这又意味着第三列的行索引必须为 2
下面是一个稍微复杂一点的例子:
a = np.array([[1, 1, 0],
[1, 1, 1],
[0, 0, 1]])
在这种情况下,没有一个唯一的最大值列。我会满足于以下任何一种答案:
[0, 1, 2]
[1, 0, 2]
a = np.array([[1, 1, 1],
[1, 1, 1],
[0, 1, 1]])
在这种情况下,我会对这些答案的任意一个表示满意:
[0, 1, 2]
[0, 2, 1]
[1, 0, 2]
[1, 2, 0]
我可以使用循环和逻辑条件来解决这些问题,但我想知道是否有一种使用numpy函数解决这个问题的方法?