如何在某个值之后找到索引的最小值

时间:2018-04-24 01:40:23

标签: arrays python-3.x numpy

我有以下列表:

y  =  np.array([    9.7,   10.1,   10.5,  10.2,  10.1,  9.9,   9.8])

我想找到一个最小值的索引,该索引符合已经超过阈值和所述阈值的最大值的标准。

在这个例子中,阈值是10.因此,我想要一个超过10的值以及超过阈值10.5的最大值。我想要的最小值是10.1。这是我的代码。

max_height = np.max(py)
height_alien = 10
x = np.where(np.logical_and(py < max_height, py >= height_alien))

我知道这是错的,因为我并没有特别声明我希望索引在最大值之后。我该怎么办?我一直得到x =(数组[1,3,4]) 我的预期答案是(数组[3,4]),我将得到索引4.

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以从给定索引开始创建一个新数组,然后执行np.max(newArray)

答案 1 :(得分:0)

如果我理解正确,你希望你的where条件只考虑在其他条件之后开始的值。

y = np.array([9.7,   10.1,   10.5,  10.2,  10.1,  9.9,   9.8])

max_height = np.argmax(y)
height_alien = 10
x = np.where(np.logical_and(np.arange(0,y.size) > max_height, y >= height_alien))

我使用argmax查找最大值的索引,并使用arange创建[0 1 2 3 ...]形式的索引数组。将此数组与y的argmax进行比较,得到形式为[False False ... True True ...]的布尔数组。