如何在numpy数组中找到最大负数和最小正数?

mat*_*ree 2 python arrays numpy max minimum

我得到一个包含正数和负数的数组。

import numpy as np
arr = np.array([-10.2, -5.3, -2.1, 0, 1.2, 3.4])
Run Code Online (Sandbox Code Playgroud)

我想找到对应于最大负数和最小正数的索引。在上面,我的预期结果是24。有什么numpy技巧可以实现这一目标吗?我在此链接中找到了解决方案,但我想知道如何通过numpy函数完成此操作: 查找数组中最大负元素和最小正元素的索引

Psi*_*dom 15

用 替换非负值-inf,然后用argmax找到最大的负值:

np.where(arr < 0, arr, -np.inf).argmax()
# 2
Run Code Online (Sandbox Code Playgroud)

类似地用infthen替换非正值argmin以找到最小的正值:

np.where(arr > 0, arr, np.inf).argmin()
# 4
Run Code Online (Sandbox Code Playgroud)

  • 或者替换为 `nan` 并使用 `nanargmax` 和 `nanargmin`。但这与使用 `inf` 没有太大区别。 (2认同)