2015-12-31 112 views
2

我有一個形狀爲(5,48,15)的張量。我如何訪問沿第0軸的元素,仍然保持三維而不需要重新整形。例如:指數Numpy張量,無需重塑

x.shape     # this is (5,48,15) 
m = x[0,:,:] 
m.shape      # This is (48,15) 
m_new = m.reshape(1,48,15) 
m_new.shape     # This is now (1,48,15) 

這是可能的,而不需要重塑?

+1

什麼是'x'?你可以添加一個樣本輸入和預期的輸出到你的問題?如果你想訪問你的數組的第0軸,你不只是'm [0,:,]'? – Kasramvd

+0

我想軸m [0,:,]但保持形狀(1,48,15),訪問m [0,:,]是(48,15)。只是想知道索引時是否有保留尺寸的方法。 – user2726995

回答

3

當您使用單個整數對軸進行索引時,與x[0, :, :]一樣,返回數組的維也會減1。

要保持三個維度,您可以...

  • 同時爲索引插入一個新的軸:

    >>> x[None, 0, :, :].shape 
    (1, 48, 15) 
    
  • 或使用切片:

    >>> x[:1, :, :].shape 
    (1, 48, 15) 
    
  • 或使用花式索引:

    >>> x[[0], :, :].shape 
    (1, 48, 15) 
    
+0

完美的是,片語法是我一直在尋找的。謝謝 – user2726995

1

選擇索引必須是一個切片或列表(或陣列):

m = x[[0],:,:] 
m = x[:1,:,:] 
m = x[0:1,:,:]