[Numpy-discussion] multivariate_normal issue with 'size' argument

Warren Weckesser warren.weckesser at gmail.com
Fri May 24 09:47:30 EDT 2013


On 5/24/13, Peter Cock <p.j.a.cock at googlemail.com> wrote:
> On Fri, May 24, 2013 at 2:15 PM, Robert Kern <robert.kern at gmail.com> wrote:
>> On Fri, May 24, 2013 at 9:12 AM, Peter Cock <p.j.a.cock at googlemail.com>
>> wrote:
>>> On Fri, May 24, 2013 at 1:59 PM, Emanuele Olivetti
>>> <emanuele at relativita.com> wrote:
>>>> Interesting. Anyone able to reproduce what I observe?
>>>>
>>>> Emanuele
>>>
>>>
>>> Yes, I can reproduce this IndexError under Mac OS X:
>>>
>>> $ which python2.7
>>> /usr/bin/python2.7
>>> $ python2.7
>>> Python 2.7.2 (default, Oct 11 2012, 20:14:37)
>>> [GCC 4.2.1 Compatible Apple Clang 4.0 (tags/Apple/clang-418.0.60)] on
>>> darwin
>>> Type "help", "copyright", "credits" or "license" for more information.
>>
>> Can everyone please report whether they have a 32-bit build of Python
>> or a 64-bit build? That's probably the most relevant factor.
>
> It seems to affect all of 32 bit Windows XP, 64 bit Mac, 32 bit Linux,
> and 64 bit Linux
> for some versions of NumPy...  Thus far the only non-failure I've seen
> is 64 bit Linux,
> Python 2.6.6 with NumPy 1.6.2 (other Python/NumPy installs on this
> machine do fail).
>
> Its a bit strange - I don't see any obvious pattern.
>
> Peter
>
> -------------------------------------------
>
> Failures:
>
> My Python installs on this Mac all seem to be 64bit (and fail),
>
> $ python3.3
> Python 3.3.1 (default, Apr  8 2013, 17:54:08)
> [GCC 4.2.1 Compatible Apple Clang 4.0 ((tags/Apple/clang-421.0.57))] on
> darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> 7fffffffffffffff True
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[ 1.80932387  0.85894164]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 4161, in
> mtrand.RandomState.multivariate_normal
> (numpy/random/mtrand/mtrand.c:19140)
> IndexError: invalid index to scalar variable.
>>>> np.__version__
> '1.7.1'
>>>> quit()
>
> This also affects NumPy 1.5 so this isn't a recent regression:
>
> $ python3.2
> Python 3.2 (r32:88445, Feb 28 2011, 17:04:33)
> [GCC 4.2.1 (Apple Inc. build 5664)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> 7fffffffffffffff True
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[ 1.11403341 -1.67856405]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 3954, in
> mtrand.RandomState.multivariate_normal
> (numpy/random/mtrand/mtrand.c:17234)
> IndexError: invalid index to scalar variable.
>>>> np.__version__
> '1.5.0'
>
> $ python3.1
> Python 3.1.2 (r312:79147, Nov 15 2010, 16:28:52)
> [GCC 4.2.1 (Apple Inc. build 5664)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> 7fffffffffffffff True
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[ 0.3834108  -0.31124203]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 3954, in
> mtrand.RandomState.multivariate_normal
> (numpy/random/mtrand/mtrand.c:17234)
> IndexError: invalid index to scalar variable.
>>>> np.__version__
> '1.5.0'
>>>> quit()
>
> And on my 32 bit Windows XP box,
>
> Python 2.7 (r27:82525, Jul  4 2010, 09:01:59) [MSC v.1500 32 bit
> (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> ('7fffffff', False)
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[-0.35072523 -0.58046885]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 3954, in
> mtrand.RandomState.multivariate_normal
> (numpy\random\mtrand\mtrand.c:17234)
> IndexError: invalid index to scalar variable.
>>>> np.__version__
> '1.5.0'
>>>>
>
> Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600
> 32 bit (Intel)] on win32
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[-0.00453374  0.2210342 ]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 4142, in
> mtrand.RandomState.multivariate_normal
> (numpy\random\mtrand\mtrand.c:19128)
> IndexError: invalid index to scalar variable.
>>>>
>>>> np.__version__
> '1.7.0rc2'
>
> Here's a couple of runs from an old 32 bit Linux machine which also
> shows the problem:
>
> $ python2.7
> Python 2.7 (r27:82500, Nov 12 2010, 14:19:08)
> [GCC 4.1.2 20070626 (Red Hat 4.1.2-13)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> ('7fffffff', False)
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[ 0.40887932 -0.09872295]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 3952, in
> mtrand.RandomState.multivariate_normal
> (numpy/random/mtrand/mtrand.c:17027)
> IndexError: invalid index to scalar variable.
>>>> np.__version__
> '1.4.1'
>>>> quit()
>
> $ python3.3
> Python 3.3.0 (default, Oct 31 2012, 13:19:08)
> [GCC 4.1.2 20070626 (Red Hat 4.1.2-13)] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> 7fffffff False
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[-0.16796654 -1.71312415]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 4127, in
> mtrand.RandomState.multivariate_normal
> (numpy/random/mtrand/mtrand.c:18657)
> IndexError: invalid index to scalar variable.
>>>> np.__version__
> '1.7.0b2'
>>>> quit()
>
> And a more up to date 64 bit Linux machine where this fails on
> some versions of NumPy:
>
> $ python3.3
> Python 3.3.1 (default, Apr  8 2013, 14:38:06)
> [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> 7fffffffffffffff True
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[-0.18862683 -0.92177665]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "mtrand.pyx", line 4127, in
> mtrand.RandomState.multivariate_normal
> (numpy/random/mtrand/mtrand.c:18657)
> IndexError: invalid index to scalar variable.
>>>> np.__version__
> '1.7.0b2'
>>>> quit()
>
> -------------------------------------------
> Successes
> -------------------------------------------
>
> 64 bit Linux:
>
> $ python2.6
> Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23)
> [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import sys;print("%x" % sys.maxsize, sys.maxsize > 2**32)
> ('7fffffffffffffff', True)
>>>> import numpy as np
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=1))
> [[-0.27469218 -2.12911784]]
>>>> print(np.random.multivariate_normal(mean=np.zeros(2), cov=np.eye(2),
>>>> size=np.int64(1)))
> [[ 0.02609307  0.32485211]]
>>>> np.__version__
> '1.6.2'
>>>> quit()
>
>


Peter: wow, that's a lot of tests!

Two more data points:
On Ubuntu 12.04, using 64 bit builds of Python 2.7.4 (from Anaconda
1.5.0), and numpy built from source: numpy 1.6.1 gives the error, but
1.6.2 does not.

Warren


>
> Peter
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>



More information about the NumPy-Discussion mailing list