簡體   English   中英

Numpy教程 - 布爾索引

[英]Numpy tutorial - Boolean indexing

讀Numpy快速教程,我無法理解這句話。

a = np.arange(12).reshape(3,4)
b1 = np.array([False,True,True]) 
b2 = np.array([True,False,True,False])
>>> a[b1,b2]  
array([ 4, 10])

為什么a[b1,b2]array([4,10])而不是array([[4,6],[8,10]])

這是因為你在那里執行integer array indexing

在內部,索引是從布爾數組計算的 -

In [72]: idx1 = np.flatnonzero(b1)

In [73]: idx2 = np.flatnonzero(b2)

In [75]: idx1
Out[75]: array([1, 2])

In [76]: idx2
Out[76]: array([0, 2])

然后,使用索引數組中的每個元素對每組索引執行整數數組索引 -

In [77]: a[1,0] # 1 from idx1[0], 0 from idx2[0]
Out[77]: 4

In [78]: a[2,2] # 2 from idx1[1], 2 from idx2[1]
Out[78]: 10

為了實現MATLAB樣式的塊提取,我們需要使用開放數組並索引每個軸/ dims。 要在NumPy中創建這樣的開放數組,我們有np.ix_ -

In [89]: np.ix_(b1,b2)
Out[89]: 
(array([[1],
        [2]]), array([[0, 2]]))

In [90]: a[np.ix_(b1,b2)]
Out[90]: 
array([[ 4,  6],
       [ 8, 10]])

暫無
暫無

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

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