[英]How to find the index of an array where summation is greater than a target value?
假設我有一個按降序排序的一維數組,例如:
arr = np.array([10, 10, 8, 5, 4, 4, 3, 2, 2, 2])
我想要索引值,其中從 0 到該索引的此數組的總和大於或等於指定的目標值。 例如,讓目標值為 40:
索引=0 (0) => 總和=10 (10)
索引=1 (0,1) => 總和=20 (10+10)
索引=2 (0,1,2) => 總和=28 (10+10+8)
索引=3 (0,1,2,3) => 總和=33 (10+10+8+5)
索引=4 (0,1,2,3,4) => 總和=37 (10+10+8+5+4)
索引=5 (0,1,2,3,4,5) => 總和=41 (10+10+8+5+4+4)
最后我想獲得索引值 5,因為總和 41 大於目標值 40。我如何以大多數 Pythonic 和適當的方式執行此操作,以便它可以處理大數字和大尺寸 arrays。
使用np.cumsum()
查找數組的累積和。 使用np.where()
大於目標值的 cumsum 的第一個元素的索引:
cumsum = arr.cumsum()
np.where(cumsum > 40)[0][0]
# 5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.