簡體   English   中英

如何找到總和大於目標值的數組的索引?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM