2017-03-06 79 views
2

我試圖找到一種方法來填充數組的行值。用一個例子來表達我想要的輸出要容易得多。給定的N×M矩陣,ARRAY1的輸入,使用數組或向量在Python中使用numpy向數組或向量填充數組沒有循環

array1 = np.array([[2, 3, 4], 
[4, 8, 3], 
[7, 6, 3]]) 

我想輸出陣列的陣列,其中每行是從相應的行組成的數值的N×N個。輸出將

[[[2, 3, 4], 
    [2, 3, 4], 
    [2, 3, 4]], 
[[4, 8, 3], 
    [4, 8, 3], 
    [4, 8, 3]], 
[[7, 6, 3], 
    [7, 6, 3], 
    [7, 6, 3]]] 

回答

1

您可以從2D重塑陣列爲3D,然後用numpy.repeat()沿所需軸:

np.repeat(array1[:, None, :], 3, axis=1) 

#array([[[2, 3, 4], 
#  [2, 3, 4], 
#  [2, 3, 4]], 

#  [[4, 8, 3], 
#  [4, 8, 3], 
#  [4, 8, 3]], 

#  [[7, 6, 3], 
#  [7, 6, 3], 
#  [7, 6, 3]]]) 

或等效你可以使用numpy.tile

np.tile(array1[:, None, :], (1,3,1)) 
1

有時有用的另一種解決方案如下

out = np.empty((3,3,3), dtype=array1.dtype) 
out[...] = array1[:, None, :]