2015-12-31 75 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,:,:]