[Numpy-discussion] Request for enhancement to numpy.random.shuffle

Warren Weckesser warren.weckesser at gmail.com
Sun Oct 12 11:33:20 EDT 2014


On Sun, Oct 12, 2014 at 11:20 AM, <josef.pktd at gmail.com> wrote:

> On Sun, Oct 12, 2014 at 10:54 AM, Warren Weckesser
> <warren.weckesser at gmail.com> wrote:
> >
> >
> > On Sun, Oct 12, 2014 at 7:57 AM, Robert Kern <robert.kern at gmail.com>
> wrote:
> >>
> >> On Sat, Oct 11, 2014 at 11:51 PM, Warren Weckesser
> >> <warren.weckesser at gmail.com> wrote:
> >>
> >> > A small wart in this API is the meaning of
> >> >
> >> >   shuffle(a, independent=False, axis=None)
> >> >
> >> > It could be argued that the correct behavior is to leave the
> >> > array unchanged. (The current behavior can be interpreted as
> >> > shuffling a 1-d sequence of monolithic blobs; the axis argument
> >> > specifies which axis of the array corresponds to the
> >> > sequence index.  Then `axis=None` means the argument is
> >> > a single monolithic blob, so there is nothing to shuffle.)
> >> > Or an error could be raised.
> >> >
> >> > What do you think?
> >>
> >> It seems to me a perfectly good reason to have two methods instead of
> >> one. I can't imagine when I wouldn't be using a literal True or False
> >> for this, so it really should be two different methods.
> >>
> >
> >
> > I agree, and my first inclination was to propose a different method (and
> I
> > had the bikeshedding conversation with myself about the name:
> "disarrange",
> > "scramble", "disorder", "randomize", "ashuffle", some other variation of
> the
> > word "shuffle", ...), but I figured the first thing folks would say is
> "Why
> > not just add options to shuffle?"  So, choose your battles and all that.
> >
> > What do other folks think of making a separate method?
>
> I'm not a fan of many similar functions.
>
> What's the difference between permute, shuffle and scramble?
>


The difference between `shuffle` and the new method being proposed is
explained in the first email in this thread.
`np.random.permutation` with an array argument returns a shuffled copy of
the array; it does not modify its argument. (It should also get an `axis`
argument when `shuffle` gets an `axis` argument.)


And how do I find or remember which is which?
>


You could start with `doc(np.random)` (or `np.random?` in ipython).

Warren



>
>
> >
> >
> >>
> >> That said, I would just make the axis=None behavior the same for both
> >> methods. axis=None does *not* mean "treat this like a single
> >> monolithic blob" in any of the axis=-having methods; it means "flatten
> >> the array and do the operation on the single flattened axis". I think
> >> the latter behavior is a reasonable interpretation of axis=None for
> >> both methods.
> >
> >
> >
> > Sounds good to me.
>
> +1 (since all the arguments have been already given
>
>
> Josef
> - Why does sort treat columns independently instead of sorting rows?
> - because there is lexsort
> - Oh, lexsort, I haven thought about it in 5 years. It's not even next
> to sort in the pop up code completion
>
>
> >
> > Warren
> >
> >
> >>
> >>
> >> --
> >> Robert Kern
> >> _______________________________________________
> >> NumPy-Discussion mailing list
> >> NumPy-Discussion at scipy.org
> >> http://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20141012/52a19f5b/attachment.html>


More information about the NumPy-Discussion mailing list