On Mon, 2014-03-03 at 23:12 +0100, Nicolas Rougier wrote:
I never noticed this kind of cast before (1.8.0), it's just a bit surprising.
It was convenient to write translations (for a bunch of points) such as:
Z = np.ones((n,2),dtype=np.float32) + (300,300)
but I can live with Z += 300,300
Just to note. That actually does the temporary cast anyway doing the calculation in double precision and then casting the result. If you want to make sure it stays in single precision you will need to make that an array with float32 dtype. - Sebastian
Nicolas
On 03 Mar 2014, at 23:02, Benjamin Root <ben.root@ou.edu> wrote:
IIRC, this is dependent on whether you are using 32bit versus 64bit numpy. All regular integer numbers can fit in 32 bits (is that right?), but the 1.1 is treated as a float32 if on a 32 bit NumPy or as float64 if on a 64 bit NumPy.
That's my stab at it.
Ben Root
On Mon, Mar 3, 2014 at 4:06 PM, Nicolas Rougier <Nicolas.Rougier@inria.fr> wrote:
Hi all,
I'm using numpy 1.8.0 (osx 10.9, python 2.7.6) and I can't understand dtype promotion in the following case:
Z = np.zeros((2,2),dtype=np.float32) + 1 print Z.dtype float32
Z = np.zeros((2,2),dtype=np.float32) + (1,1) print Z.dtype float64
Is this the expected behavior ? What it the difference between the two lines ?
Nicolas _______________________________________________ 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
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion