2015-08-20 46 views
1

我有一個簡單的2D numpy的陣列這樣比較2D numpy的陣列到自身形成三維陣列

array([[1, 0, 1], 
     [1, 1, 0], 
     [0, 1, 1], 
     [0, 0, 0], 
     [1, 0, 0]]) 

我試圖做的是通過自身乘以陣列的每行形成三維陣列,(使1*1 = 1和其他任何將0,essentailly一個and功能):

array([[[1,0,1],[1,0,0],[0,0,1],[0,0,0],[1,0,0]], 
     [[1,0,0],[1,1,0],[0,1,0],[0,0,0],[1,0,0]], 
     ..., 
     ..., 
     ...]) 

回答

1

原來答案是非常簡單的。如果數組是x

x[np.newaxis,:,:]*x[:,np.newaxis,:] 

而這一點也適用的東西,如邏輯表達式,如果你只想在每行中相同的元素比較,你可以這樣做:

np.logical_not(np.logical_xor(x[np.newaxis,:,:], x[:,np.newaxis,:])) 

哪將返回:

array([[[ True, True, True], 
     [ True, False, False], 
     [False, False, True], 
     [False, True, False], 
     [ True, True, False]], 

     [[ True, False, False], 
     [ True, True, True], 
     [False, True, False], 
     [False, False, True], 
     [ True, False, True]], 

     ..., 
     ..., 
     ...], dtype=bool)