On Tue, Jan 24, 2012 at 7:29 AM, Kathleen M Tacina < kathleen.m.tac...@nasa.gov> wrote:
> ** > I was experimenting with np.min_scalar_type to make sure it worked as > expected, and found some unexpected results for integers between 2**63 and > 2**64-1. I would have expected np.min_scalar_type(2**64-1) to return > uint64. Instead, I get object. Further experimenting showed that the > largest integer for which np.min_scalar_type will return uint64 is > 2**63-1. Is this expected behavior? > This is a bug in how numpy detects the dtype of python objects. https://github.com/numpy/numpy/blob/master/numpy/core/src/multiarray/common.c#L18 You can see there it's only checking for a signed long long, not accounting for the unsigned case. I created a ticket for you here: http://projects.scipy.org/numpy/ticket/2028 -Mark > > On python 2.7.2 on a 64-bit linux machine: > >>> import numpy as np > >>> np.version.full_version > '2.0.0.dev-55472ca' > >>> np.min_scalar_type(2**8-1) > dtype('uint8') > >>> np.min_scalar_type(2**16-1) > dtype('uint16') > >>> np.min_scalar_type(2**32-1) > dtype('uint32') > >>> np.min_scalar_type(2**64-1) > dtype('O') > >>> np.min_scalar_type(2**63-1) > dtype('uint64') > >>> np.min_scalar_type(2**63) > dtype('O') > > I get the same results on a Windows XP machine running python 2.7.2 and > numpy 1.6.1. > > Kathy > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion