[Numpy-discussion] is it a bug?

shuwj5460@16... shuwj5460@16...
Thu Mar 12 20:08:47 CDT 2009


> 
> On Wed, Mar 11, 2009 at 19:55, shuwj5460@163.com <shuwj5460@163.com> wrote:
> > Hi,
> >
> > import numpy as np
> > x = np.arange(30)
> > x.shape = (2,3,5)
> >
> > idx = np.array([0,1])
> > e = x[0,idx,:]
> > print e.shape
> > #----> return (2,5). ok.
> >
> > idx = np.array([0,1])
> > e = x[0,:,idx]
> > print e.shape
> >
> > #-----> return (2,3). I think the right answer should be (3,2). Is
> > # ? ? ? it a bug here? my numpy version is 1.2.1.
> 
> It's certainly weird, but it's working as designed. Fancy indexing via
> arrays is a separate subsystem from indexing via slices. Basically,
> fancy indexing decides the outermost shape of the result (e.g. the
> leftmost items in the shape tuple). If there are any sliced axes, they
> are *appended* to the end of that shape tuple.
> 
x = np.arange(30)
x.shape = (2,3,5)

idx = np.array([0,1,3,4])
e = x[:,:,idx]
print e.shape
#---> return (2,3,4) just as me think.

e = x[0,:,idx]
print e.shape
#---> return (4,3). 

e = x[:,0,idx]
print e.shape
#---> return (2,4). not (4,2). why these three cases excute so
# differently?



More information about the Numpy-discussion mailing list