我有以下列表:
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.
谢谢!
答案 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 ...]
的布尔数组。