Python 2.7 从三维numpy矩阵中提取行

Python 2.7 从三维numpy矩阵中提取行,python-2.7,numpy,matrix,Python 2.7,Numpy,Matrix,我目前遇到一个简单的问题,就是从3d numpy矩阵中提取一行 给定一个矩阵[3,3,3]=>我想提取一行,比如输出变成[1,3,3] 但我如何在不重塑的情况下做到这一点?我似乎一直在提取[3,3] >>> import numpy >>> a = numpy.random.rand(3,3,3) >>> print a[0].shape (3, 3) 对于任何数组形状,使用标量索引会将维数减少1 x[0] # 1 to 0

我目前遇到一个简单的问题,就是从3d numpy矩阵中提取一行

给定一个矩阵[3,3,3]=>我想提取一行,比如输出变成[1,3,3]

但我如何在不重塑的情况下做到这一点?我似乎一直在提取[3,3]

>>> import numpy
>>> a = numpy.random.rand(3,3,3)
>>> print a[0].shape
(3, 3)

对于任何数组形状,使用标量索引会将维数减少1

 x[0]       # 1 to 0 (scalar)
 x[0,:], x[:,0]     # 2 to 1
 x[0,:,:], x[:,0,:]   # 3 to 2
可以通过使用列表进行切片或索引,以多种方式保留尺寸:

 x[[0],:,:]
 x[0:1,:,:]
或将1添加回:

 x[0, None,:,:]  
 x[0,:,:][None,:,:]
 x[0,:,:].reshape(1,n,m)

重塑是便宜的,即使它看起来“丑陋”。不要害怕使用它。

输出是正确的。你需要重塑它。行=a[0]。重塑1,3,3