2011-09-10 99 views

回答

31

除了其他的答案,你也可以使用与numpy.newaxis切片:

>>> from numpy import zeros, newaxis 
>>> a = zeros((6, 8)) 
>>> a.shape 
(6, 8) 
>>> b = a[:, :, newaxis] 
>>> b.shape 
(6, 8, 1) 

甚至这个(这将尺寸任意数量的工作):

>>> b = a[..., newaxis] 
>>> b.shape 
(6, 8, 1) 
+5

在附注中,'numpy.newaxis'只是'None'。 'newaxis'只是为了可读性。它相当于'b = a [...,None]'(省略号也允许它适用于N维数组,而不仅仅是2D数组。) –

+1

True。出于某种原因,我有一种印象:'newaxis'是'None'只是一个实现细节(因此可能会在将来发生变化),但它看起来像是明确记录的。 –

+0

假设您希望第三个轴不是1?例如你怎么把'a'换成'b'和'b.shape =(6,8,3)'? – Gathide

2
import numpy as np 

a= np.eye(3) 
print a.shape 
b = a.reshape(3,3,1) 
print b.shape 
6
numpy.reshape(array, array.shape + (1,)) 
+0

谢谢,我用A = A.reshape(A.shape +(1,)) – nobody

+2

如果你很乐意修改'A',你可以简单地分配给shape属性:A.shape = A.shape +(1,)',甚至是'A.shape + = 1,'。 –

相关问题