On 7/4/19, Kexuan Sun
Hi,
I would like to request a code review. The random.permutation and random.shuffle functions now can only shuffle along the first axis of a multi-dimensional array. I propose to add an axis argument for the functions and allow them to shuffle along a given axis. Here is the link to the PR (https://github.com/numpy/numpy/pull/13829).
Given the current semantics of 'shuffle', the proposed change makes sense. However, I would like to call attention to https://github.com/numpy/numpy/issues/5173 and to the mailing list thread from 2014 that I started here: https://mail.python.org/pipermail/numpy-discussion/2014-October/071340.html The topic of those discussions was that the current behavior of 'shuffle' is often *not* what users want or expect. What is often desired is to shuffle each row (or column, or whatever dimension is specified) *independently* of the others. So if a = np.array([[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]), then randomly shuffling 'a' along axis=1 should shuffle each row independently of the others, to create something like a = np.array([[2, 4, 0, 3, 1], [8, 6, 9, 7, 5], [11, 12, 10, 14, 13]]) An API for this was discussed (and of course that ran into the second of the two hard problems in computer science, naming things). Take a look at those discussions, and check that https://github.com/numpy/numpy/pull/13829 fits in with the possible changes mentioned in those discussions. If we don't use the name 'shuffle' for the new random permutation function(s), then the change in PR 13829 is a good one. However, if we want to try to reuse the name 'shuffle' to also allow independent shuffling along an axis, then we have to be careful with how we interpret the 'axis' argument. Warren
Thanks!
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@python.org https://mail.python.org/mailman/listinfo/numpy-discussion