Michael McNeil Forbes wrote: > What are the semantics of the "take" function? > > I would have expected that the following have the same shape and size: > >>>> a = array([1,2,3]) >>>> inds = a.nonzero() >>>> a[inds] > array([1, 2, 3]) >>>> a.take(inds) > array([[1, 2, 3]]) > > Is there a bug somewhere here or is this intentional?
It's a result of a.nonzero() returning a tuple. In [3]: a.nonzero() Out[3]: (array([0, 1, 2]),) __getitem__ interprets tuples specially: a[1,2,3] == a[(1,2,3)], also a[0,] == a[0]. .take() doesn't; it simply tries to convert its argument into an array. It can convert (array([0, 1, 2]),) into array([[0, 1, 2]]), so it does. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco _______________________________________________ Numpy-discussion mailing list [email protected] http://projects.scipy.org/mailman/listinfo/numpy-discussion
