如何获取前n个值的总和大于某个值的排序数组的索引

时间:2019-06-19 10:12:59

标签: python numpy

如果我得到一个排序的numpy数组A = [1、2、3、4、5、6],我想获取索引,其中A [0:index]的总和大于某个数字(假定设为9,在这种情况下,index的值应为3),如何用python编写?

我想也许我可以使用np.where()或np.cumsum(),但是它不起作用

np.argwhere(np.cumsum(A) > 9)

当然,这是错误的,那么正确的方法是什么?

2 个答案:

答案 0 :(得分:0)

你很近。您可以按照以下方式使用argmax。另外,在使用argmax时,添加检查以确保至少1的值超过阈值。

threshold = 9
temp = np.cumsum(A) > threshold

if temp.any():
    print(np.argmax(temp))
else:
    print("Threshold never crossed")

答案 1 :(得分:0)

我建议:


def foo(array, threshold):
    valid_entries = np.cumsum(array) > threshold
    return np.argmax(valid_entries) if np.any(valid_entries) else None