python - 在 numpy 中查找最大值的索引排除零值

标签 python numpy

我有以下 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 值的元素的索引。

我不想编写将在列表上迭代运行的代码。

有什么想法吗?

最佳答案

一种可能的方法是:

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)。

关于python - 在 numpy 中查找最大值的索引排除零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64945925/

相关文章:

Python函数不访问类变量

python - 如何检查变量是否存在?

python - SciPy interp2d(linear) 结果不同于 MatLab interp2(linear)

python - NumPy - 使用权重对 2D 数组列进行向量化 bincount

python - 如何使 one_class svm 用于多类分类?

python - Django Inlines 用户权限+仅查看 - 权限问题

python - 有没有一种优雅的方法来跟踪 Python 中的连接项集?

python - Numpy 数组元素与 Float64 的比较

python - 从 JPG 到 b64encode 再到 cv2.imread()

python - 如何用 f2py 编写 genfromtxt?