2016-01-16 101 views
1

我有兩個陣列a=[1,2,3,4]b=[2,3]。我想知道是否存在基於陣列元素比較構造布爾2D陣列c(2D矩陣,即2 * 4矩陣)的有效方式,即c[0,0] = trueiff a[0] == b[0]。基本的方法是遍歷所有ab的元素,但我認爲使用numpy可能更好。我檢查了numpy參考,但無法找到一個例程可以完全。如何使用numpy從兩個1D陣列生成布爾2D陣列

感謝

回答

2

如果我明白問題的正確,可以延長bnp.newaxis/None尺寸形成2D數組,然後對a進行平等檢查,這將在broadcasting帶來了量化的解決方案,像這樣 -

b[:,None] == a 

採樣運行 -

In [5]: a 
Out[5]: array([1, 2, 3, 4]) 

In [6]: b 
Out[6]: array([2, 3]) 

In [7]: b[:,None] == a 
Out[7]: 
array([[False, True, False, False], 
     [False, False, True, False]], dtype=bool) 
+0

的代碼很好,我想知道如果我想要一個4 * 2矩陣而不是示例中顯示的2 * 4矩陣,我該怎麼做? – daiyue

+1

@daiyue在這種情況下擴展'a'並與'b'比較:'a [:,None] == b'。 – Divakar