Argmax - 区分具有相同值的数组和具有最大第零分量的数组

Argmax - differentiate between array having same values and array having largest zeroth component

我正在实现 argmax 函数形式 numpy 库来获取向量中最大元素的索引。以下是我的代码。

import numpy as np

a = np.array([2, 0, 0, 0, 0])
idx = np.argmax(a)  # Works fine, returns 0

b = np.array([0, 0, 0, 0, 0])
idx = np.argmax(b)  # Returns 0 again

从上面的代码中,仅通过查看 idx 变量无法区分 argmax 的输入是 a 还是 b

我的代码有一个类似的设置,我不知道输入数据的先验信息,但可以使用我收到的数据的 argmax。数据可以包含全部为相同整数值的条目,或者它可以在五个索引位置的任何一个中具有一个最大值(与其余值相比)。但是,当最大值出现在第 0 个位置时,我的其余代码将失败,因为我假设第一个索引位置包含最大值。

python 中是否有任何其他形式的 argmax 可以 return None(或除 0 之外的任何其他形式)表示没有输入数据中的一个最大值?

import numpy as np

a = np.array([2, 0, 0, 0, 0])
idx = np.argmax(a) if ~np.all(a == a[0]) else None
print(idx)  # 0

b = np.array([0, 0, 0, 0, 0])
idx = np.argmax(b) if ~np.all(b == b[0]) else None
print(idx)  # None

# Alternative solution

a = np.array([2, 0, 0, 0, 0])
idx = np.argmax(a) - np.all(a == a[0]).astype(int)
print(idx)  # 0

b = np.array([0, 0, 0, 0, 0])
idx = np.argmax(b) - np.all(b == b[0]).astype(int)
print(idx)  # -1