Как получить индекс отсортированного массива, в котором сумма первых n значений больше определенного значения - PullRequest
0 голосов
/ 19 июня 2019

если я получил отсортированный массив N = 0, 1, 2, 3, 4, 5, 6], я хочу получить индекс, в котором сумма A [0: index] больше определенного числа (предполагается чтобы быть 9, в этом случае значение индекса должно быть 3), как я могу написать его на Python?

Я думаю, что я могу использовать np.where () или np.cumsum (), но это не работает

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

конечно, это неправильно, так какой же правильный метод?

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Я предлагаю:


def foo(array, threshold):
    valid_entries = np.cumsum(array) > threshold
    return np.argmax(valid_entries) if np.any(valid_entries) else None
0 голосов
/ 19 июня 2019

Вы были близки. Вы можете просто использовать argmax следующим образом. Кроме того, при использовании argmax добавьте проверку, чтобы убедиться, что значение по крайней мере 1 пересекает порог.

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

if temp.any():
    print(np.argmax(temp))
else:
    print("Threshold never crossed")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...