我目前遇到的问题是从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)
答案 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
便宜,即使它看起来很丑陋。不要害怕使用它。