【发布时间】:2020-04-03 16:46:57
【问题描述】:
我想在小于目标值n 的数组中找到第一次出现的最大元素的索引。我将举一个例子,以使其更清楚。假设我有这个 numpy 数组:
import numpy as np
A = np.array([0.1, 0.2, 0.4, 0.4, 0.7, 0.7, 0.7, 1])
如果我设置目标n = 0.5,那么我想获得两个0.4 之间的最低索引,这两个n 都是数组中的最高元素,小于n。所以,在这种情况下,返回的索引应该是2。如果我设置n = 0.9,那么返回的索引应该是4,这是0.7的最低索引,以此类推……
当然我可以使用for 循环来做到这一点,但我正在寻找一种快速且可读的pythonic 解决方案。到目前为止,我尝试的是基于np.argmin(np.unique(A)<n) -1 的方法,但它们不能按我的意愿工作。例如:
np.argmin(np.unique(A)<0.5) - 1
正确返回2,但是
np.argmin(np.unique(A)<0.9) - 1
返回3,因为它没有计算被np.unique()“压缩”的两次出现的0.4。有人知道如何做到这一点吗?
【问题讨论】:
标签: python arrays numpy sorting