我有一個長度爲1024的值的矢量g
,以及一個大小爲32的小矢量f
,用於定義bin邊界。 v
和f
按升序排列。我想要返回一組載體,即長度爲len(f)
的[v_1,v_2,v_3,...]
,使得每個載體v_i
包含在f_i
和f_i + 1
之間的g
的索引。有沒有NumPy的方式來做這樣的事情,不涉及循環?numpy binning:如何獲得滿足謂詞的數組索引
0
A
回答
1
您可以使用searchsorted
找到排序f
的位置在g
。這些給你想要的範圍的下限和上限:
例如,
In [42]: g
Out[42]:
array([ 1, 11, 19, 20, 21, 32, 36, 41, 47, 53, 54, 55, 65, 66, 69, 74, 76,
87, 89, 94])
In [43]: f
Out[43]: [0, 10, 20, 50, 100]
In [44]: binedges = g.searchsorted(f)
In [45]: binedges
Out[45]: array([ 0, 1, 3, 9, 20])
數組binedges
給你,你需要的所有信息:指標爲斌k
範圍爲range(binedges[k], binedges[k+1])
。
這裏是你如何可以創建在每個箱指數的顯式列表:
In [46]: rngs = [list(range(binedges[k], binedges[k+1])) for k in range(len(binedges)-1)]
In [47]: rngs
Out[47]: [[0], [1, 2], [3, 4, 5, 6, 7, 8], [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]
0
首先第一件事情:
import numpy as np
假設你有你的數據g
:
g = sorted((1e3 * np.random.random(1024)).astype(int))
和你的垃圾箱f
:
f = sorted((1e3 * np.random.random(32)).astype(int))
可以使用,其返回bin索引f
其中eac的g
^h元素屬於:
dg = np.digitize(g,f)
所得載體將包含不同大小的列表,所以你可能要保存它是一個列表:
for i in range(len(f)): v.append(np.argwhere(dg == i))
相關問題
- 1. numpy數組,如何選擇滿足多個條件的索引?
- 2. 滿足一元Prolog謂詞
- 3. 執行函數,直到謂詞滿足
- 4. 如何獲得滿足過濾器的值的索引?
- 5. 如何在滿足多個條件的numpy數組中找到索引?
- 6. 在滿足謂詞(斯卡拉)
- 7. Haskell組列表直到組滿足謂詞
- 8. 如何獲得謂詞值
- 9. Julia:用謂詞索引多維數組
- 10. 查找滿足謂詞的硬幣組合的算法?
- 11. Python - 分組滿足謂詞的連續元素
- 12. 如何替換滿足謂詞「即時」的位置?
- 13. 如何獲得一個numpy數組的線性索引(sub2ind)
- 14. 如果謂詞滿足,如何從容器中移動(重新)?
- 15. 如何索引numpy數組?
- 16. 滿足謂詞的函數收集子樹的標準名稱?
- 17. 只獲取那些滿足numpy數組條件的值
- 18. 如何獲得謂詞的主體?
- 19. Rxjs:民意調查數據,直到謂詞滿足
- 20. Binning in Numpy
- 21. Binning numpy array
- 22. 如何返回numpy數組的索引?
- 23. 計數和索引滿足條件
- 24. 如何獲得滿足條件的所有組合
- 25. 選擇滿足某個謂詞的隨機值的pythonic方法
- 26. 計算在Django中滿足謂詞的行
- 27. 測試集合滿足謂詞中的所有元素
- 28. Oracle - 選擇其中一列滿足謂詞的所有列表
- 29. 在3D陣列中搜索滿足某個謂詞的最近點
- 30. 索引多維numpy的數組索引
感謝。這很好。 – LostInTheFrequencyDomain