簡體   English   中英

用基於自身的條件語句索引一個 numpy 數組是什么意思?

[英]What is meant by indexing a numpy array with a conditional statement based on itself?

我正在開發一個用於網絡分析的大型庫,遇到了一條令人困惑的線路,我不熟悉其調用約定。

    monitors = [1,2,3,4]
    nmonitors = 7 # This value is passed arbitrarily to the function

    while len(monitors) < nmonitors:
        remaining = np.arange(len(routers)) # len(routers) here is == 5
        for i in monitors:
            remaining = remaining[remaining != i]
        monitors.append(np.random.choice(remaining))

循環內部問題中的行通過基於i和自身的條件索引remaining數組。 經過一些調試后,它似乎不僅僅是評估布爾值並使用該布爾值索引數組?

有沒有人熟悉這種語法/約定並能夠指出我 numpy 文檔的相關部分或解釋? 我已經搜索了幾個小時仍然沒有結果,謝謝。

沒有特殊的語法,只是使用條件測試生成布爾數組和使用布爾值索引數組的組合。

一個示例數組:

In [125]: arr = np.arange(4)
In [126]: arr
Out[126]: array([0, 1, 2, 3])

用布爾值索引:

In [127]: arr[[True,False,True,False]]
Out[127]: array([0, 2])

使用測試創建布爾值:

In [128]: (arr%2)==0
Out[128]: array([ True, False,  True, False])
In [129]: arr[(arr%2)==0]
Out[129]: array([0, 2])

或者像你的例子一樣進行測試:

In [131]: arr!=2
Out[131]: array([ True,  True, False,  True])
In [132]: arr[arr!=2]
Out[132]: array([0, 1, 3])

所以內部循環正在從remaining刪除所有等於monitors元素,只留下[0] 較大的循環有問題,但這與布爾索引的“語法”無關。

它返回一個新的布爾值數組,與原始remaining維度相同。 對於remaining每個原始元素,只要該元素不等於i ,新數組中的等效索引為true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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