[SciPy-dev] numpy.random.randint

Alan G Isaac aisaac at american.edu
Fri Mar 10 12:26:47 CST 2006

> Johannes Löhnert wrote: 
>> I just noticed that in function numpy.random.randint, the 
>> shape=... keyword was replaced by size=... 

>> I find this somewhat counterintuitive, as it denotes 
>> the shape of the desired array (as tuple), 
>> although it also takes integer values. Also it is an 
>> unnecessary break with backwards compatibility (to RandomArray). 

>> I would suggest to allow both "shape" & "size", with 
>> "shape" having precedence. 

On Fri, 10 Mar 2006, Robert Kern apparently wrote: 
> It was a choice for compatibility with the scipy PRNGs all of which use "size". 
> "shape" was not a good argument name because many of the probability 
> distributions have a "shape" parameter. 

> I don't think it's wise to make more ways to do exactly 
> the same thing. 

But this is really horrible:

    >>> import numpy as N
    >>> x = N.random.standard_normal(size=(3,2))
    >>> x.size
    >>> x.shape
    (3, 2)
    >>> x = N.random.standard_normal(shape=(3,2))
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    TypeError: 'shape' is an invalid keyword argument for this function

Since numpy is less than version 1, this really should be 
changed for consistency, and allowing both for a while with 
a deprecation warning on 'size' is reasonable.

I do not think any of the numpy distributions have a competing 'shape'
parameter, but if so that just makes the situation *worse*.

A user's opinion,
Alan Isaac

More information about the Scipy-dev mailing list