从3d numpy矩阵

时间:2017-03-11 02:08:09

标签: 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 个答案:

答案 0 :(得分:1)

对于任何数组形状,使用标量进行索引会将尺寸减小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)

reshape便宜,即使它看起来很丑陋。不要害怕使用它。