[Numpy-discussion] floor with dtype

Thomas Jollans tjol at tjol.eu
Mon Sep 25 06:23:25 EDT 2017


On 2017-09-25 10:59, Renato Fabbri wrote:
> """
> In [3]: n.floor(n.linspace(0,5,7), dtype=n.int <http://n.int>)
> ---------------------------------------------------------------------------
> TypeError                                 Traceback (most recent call last)
> <ipython-input-3-1471f5d738e8> in <module>()
> ----> 1 n.floor(n.linspace(0,5,7), dtype=n.int <http://n.int>)
> 
> TypeError: No loop matching the specified signature and casting
> was found for ufunc floor
> 
> In [4]: n.__version__
> Out[4]: '1.11.0'
> """
> 
> Is this the expected behavior?

Yes. There is no floor function for integers.

The dtype argument specified not only the return type, but the type the
calculation is done in as well. floor() only exists, and only makes
sense, for floats. (You can use floor(a, dtype='f4') and so on to insist
on floats of a different width)

If you have some floats, and you want to get their floor as integers,
you'll have to cast. In that case, in actual fact, there is little
reason to use floor at all:

In [2]: np.arange(1.9, 11.)
Out[2]: array([  1.9,   2.9,   3.9,   4.9,   5.9,   6.9,   7.9,   8.9,
9.9,  10.9])

In [3]: np.arange(1.9, 11.).astype('i8')
Out[3]: array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10])


> 
> I am doing:
>>>> myints = n.array(n.floor(myarray), dtype=n.int <http://n.int>)
> to get the integers.
> 
> tx.
> R.
> 
> 
> -- 
> Renato Fabbri
> GNU/Linux User #479299
> labmacambira.sourceforge.net <http://labmacambira.sourceforge.net>
> 
> 
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at python.org
> https://mail.python.org/mailman/listinfo/numpy-discussion
> 


-- 
Thomas Jollans


More information about the NumPy-Discussion mailing list