On Tue, Feb 7, 2012 at 11:11 AM, Jordi Gutiérrez Hermoso <jord...@octave.org > wrote:
> Consider the following. Is this a bug? > > Thanks, > - Jordi G. H. > > ----------------------------------------------- > #!/usr/bin/python > > import numpy as np > > x = np.reshape(np.random.uniform(size=2*3*4), [2,3,4]) > > idx = np.array([False, True, False, True]) > y = x[0,:,:]; > > ## Why is this transposed? > print x[0, :, idx].T == y[:, idx] > > ## This doesn't happen with non-boolean indexing > print x[0, :, 1:3] == y[:, 1:3] Funny things do happen when you mix boolean indexing with slicing/fancy indexing. This does seem strange to me: >>> print x.shape (2, 3, 4) >>> print x[0, :, :].shape (3, 4) >>> print x[0, :, idx].shape (2, 3) # 1-D slices using regular indexing and slicing >>> print x[0, :, 1] [ 0.06500275 0.46899149 0.50125757] >>> print x[0, :, 3] [ 0.06500275 0.46899149 0.50125757] # 2-D view using regular indexing, slicing and boolean indexing >>> print x[0, :, idx] [[ 0.06500275 0.46899149 0.50125757] [ 0.68811907 0.94795054 0.86839934]] # 2-D view using indexing and slicing >>> print x[0, :, 1:4] [[ 0.06500275 0.95042819 0.68811907] [ 0.46899149 0.49388795 0.94795054] [ 0.50125757 0.04363919 0.86839934]] The 1-D views makes sense for them to be of shape (3,), but the 2-D view is inconsistent with the last result. Could this be a bug related to how boolean indexing tends to flatten the results? Stacking flattened arrays would yield the second result. Ben Root
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion