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
我正在实现 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