On Fri, Jun 10, 2011 at 3:24 PM, Charles R Harris <charlesr.har...@gmail.com > wrote:
> > > On Fri, Jun 10, 2011 at 2:17 PM, Benjamin Root <ben.r...@ou.edu> wrote: > >> >> >> On Fri, Jun 10, 2011 at 3:02 PM, Charles R Harris < >> charlesr.har...@gmail.com> wrote: >> >>> >>> >>> On Fri, Jun 10, 2011 at 1:50 PM, Benjamin Root <ben.r...@ou.edu> wrote: >>> >>>> Came across an odd error while using numpy master. Note, my system is >>>> 32-bits. >>>> >>>> >>> import numpy as np >>>> >>> type(np.sum([1, 2, 3], dtype=np.int32)) == np.int32 >>>> False >>>> >>> type(np.sum([1, 2, 3], dtype=np.int64)) == np.int64 >>>> True >>>> >>> type(np.sum([1, 2, 3], dtype=np.float32)) == np.float32 >>>> True >>>> >>> type(np.sum([1, 2, 3], dtype=np.float64)) == np.float64 >>>> True >>>> >>>> So, only the summation performed with a np.int32 accumulator results in >>>> a type that doesn't match the expected type. Now, for even more >>>> strangeness: >>>> >>>> >>> type(np.sum([1, 2, 3], dtype=np.int32)) >>>> <type 'numpy.int32'> >>>> >>> hex(id(type(np.sum([1, 2, 3], dtype=np.int32)))) >>>> '0x9599a0' >>>> >>> hex(id(np.int32)) >>>> '0x959a80' >>>> >>>> So, the type from the sum() reports itself as a numpy int, but its >>>> memory address is different from the memory address for np.int32. >>>> >>>> >>> One of them is probably a long, print out the typecode, dtype.char. >>> >>> Chuck >>> >>> >>> >> Good intuition, but odd result... >> >> >>> import numpy as np >> >>> a = np.sum([1, 2, 3], dtype=np.int32) >> >>> b = np.int32(6) >> >>> type(a) >> <type 'numpy.int32'> >> >>> type(b) >> <type 'numpy.int32'> >> >>> a.dtype.char >> 'i' >> >>> b.dtype.char >> 'l' >> >> So, the standard np.int32 is getting listed as a long somehow? To further >> investigate: >> >> > Yes, long shifts around from int32 to int64 depending on the OS. For > instance, in 64 bit Windows it's 32 bits while in 64 bit Linux it's 64 bits. > On 32 bit systems it is 32 bits. > > Chuck > > Right, that makes sense. But, the question is why does sum() put out a result dtype that is not identical to the dtype that I requested, or even the dtype of the input array? Could this be an indication of a bug somewhere? Even if the bug is harmless (it was only noticed within the test suite of larry), is this unexpected? Ben Root
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion