[Numpy-discussion] numpy.random.shuffle

Robert Kern robert.kern at gmail.com
Wed Nov 22 13:47:30 CST 2006


Christopher Barker wrote:
> Robert Kern wrote:
>> I don't want to assume that the only two sequence types are lists and arrays.
> 
> Does numpy.random.shuffle really have to work on any sequence? and 
> without making a copy? I'm not so sure -- having num* functions operate 
> on any sequence has been a design goal of Numeric from the beginning, 
> but I've never thought it that important.

I think it is for this one function. I want numpy.random to be able to have all
of the functionality of the stdlib's random module (although not as a drop-in
replacement). The reason is that random number generation is something that
should be completely and centrally controllable. I should be able to write my
application such that it seeds the PRNG state *once* and uses that state
everywhere. If I need to keep instances of both numpy.random.RandomState and
random.Random around, then something's wrong.

> However, it is pretty consistent across numpy, so we should probably 
> support it here.
> 
> How about two cases:
> 
> 1) sequences that support copy()

It's not the container sequences would support a .copy() method, but the indexed
items.

> 2) sequences that don't -- in that case, it is assumed that indexing has 
> copy semantics.
> 
> It truth, this means:
> 1) numpy arrays
> 2) standard python mutable sequences
> 
> But it does satisfy the duck typing approach.
> 
> Maybe we could specifically check for copy vs. view semantics, but that 
> seems like overkill.

It's also probably impossible.

-- 
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


More information about the Numpy-discussion mailing list