在numpy中查找最大值的索引,但排除零值。

3

我有以下的numpy:

e = np.array([0, -1.3, 0, -3.9, 0, -0.9, 0])

我想找到列表中除0外最大值的索引位置。
以下代码示例返回列表中第一个元素,因为它的值为0。
result = np.argmax(e)
print(result)

但我不希望在查找最大值时考虑零值:

预期结果应该是5,这是具有-0.9值的元素的索引。

我不想编写会对列表进行迭代运行的代码。

有什么建议吗?

2个回答

3

一个可能的方法是:

import numpy as np

e = np.array([0, -1.3, 0, -3.9, 0, -0.9, 0])

result = np.nanargmax(np.where(e != 0, e, np.nan))
print(result)

输出

5

请注意,这不会改变输入数组(在本例中为 e)。

0
一个简单的解决方案是将0替换为-np.inf。
a[a == 0] = -np.inf
np.argmax(a)
>>> 5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接