[NumPy-Tickets] [NumPy] #2093: Casting rule change since 1.6.1
NumPy Trac
numpy-tickets@scipy....
Wed Mar 28 17:11:09 CDT 2012
#2093: Casting rule change since 1.6.1
---------------------------+------------------------------------------------
Reporter: matthew.brett | Owner: somebody
Type: defect | Status: new
Priority: normal | Milestone: Unscheduled
Component: Other | Version: devel
Keywords: |
---------------------------+------------------------------------------------
Description changed by matthew.brett:
Old description:
> This, in numpy 1.6.1:
>
> In [2]: (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
> Out[2]: dtype('int16')
>
> changed to this in current trunk:
>
> In [2]: (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
> Out[2]: dtype('uint16')
>
> which is different still in previous versions of numpy (e.g. 1.4.1):
>
> In [2]: (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
> Out[2]: dtype('uint8')
>
> (see below for more versions)
>
> My impression had been that the plan was to avoid changes in the
> casting rules if possible.
>
> I assume this change was not intentional?
>
> {{{
> import numpy as np
>
> Adata = np.zeros((2,), dtype=np.uint8)
> Bdata = np.zeros((2,), dtype=np.int16)
> Bzero = np.int16(0)
> Bbig = np.int16(256)
>
> print np.__version__
> print 'Array add', (Adata + Bdata).dtype
> print 'Scalar 0 add', (Adata + Bzero).dtype
> print 'Scalar 256 add', (Adata + Bbig).dtype
> }}}
>
> I get this output:
>
> 1.4.1
> Array add int16
> Scalar 0 add uint8
> Scalar 256 add uint8
>
> 1.5.1
> Array add int16
> Scalar 0 add uint8
> Scalar 256 add uint8
>
> 1.6.1
> Array add int16
> Scalar 0 add uint8
> Scalar 256 add int16
>
> 1.7.0.dev-aae5b0a
> Array add int16
> Scalar 0 add uint8
> Scalar 256 add uint16
New description:
This, in numpy 1.6.1:
In [2]: (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
Out[2]: dtype('int16')
changed to this in current trunk:
In [2]: (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
Out[2]: dtype('uint16')
which is different still in previous versions of numpy (e.g. 1.4.1):
In [2]: (np.zeros((2,), dtype=np.uint8) + np.int16(257)).dtype
Out[2]: dtype('uint8')
(see below for more versions)
My impression had been that the plan was to avoid changes in the
casting rules if possible.
I assume this change was not intentional?
Testing with this script:
{{{
import numpy as np
Adata = np.zeros((2,), dtype=np.uint8)
Bdata = np.zeros((2,), dtype=np.int16)
Bzero = np.int16(0)
Bbig = np.int16(256)
print np.__version__
print 'Array add', (Adata + Bdata).dtype
print 'Scalar 0 add', (Adata + Bzero).dtype
print 'Scalar 256 add', (Adata + Bbig).dtype
}}}
Gives the following output:
{{{
1.4.1
Array add int16
Scalar 0 add uint8
Scalar 256 add uint8
1.5.1
Array add int16
Scalar 0 add uint8
Scalar 256 add uint8
1.6.1
Array add int16
Scalar 0 add uint8
Scalar 256 add int16
1.7.0.dev-aae5b0a
Array add int16
Scalar 0 add uint8
Scalar 256 add uint16
}}}
--
--
Ticket URL: <http://projects.scipy.org/numpy/ticket/2093#comment:1>
NumPy <http://projects.scipy.org/numpy>
My example project
More information about the NumPy-Tickets
mailing list