How to convert a float array to an integer array in python ?

Posted on March 22, 2019 Edit


Examples of how to convert a float array to an integer array in python:

Using the numpy function astype

To convert a float array to an integer array in python, a solution is to use astype, example:

>>> import numpy as np
>>> A = np.array((0.4, 1.6, 2.1, -3.7, 2.9))
>>> A
array([ 0.4,  1.6,  2.1, -3.7,  2.9])
>>> A = A.astype(int)
>>> A
array([ 0,  1,  2, -3,  2])

Round the numbers before converting them in integer

It is also possible to round the numbers and after convert them to integer using the numpy function around

>>> import numpy as np
>>> A = np.array((0.4, 1.6, 2.1, -3.7, 2.9))
>>> A
array([ 0.4,  1.6,  2.1, -3.7,  2.9])
>>> A = np.around(A)
>>> A
array([ 0.,  2.,  2., -4.,  3.])
>>> A = A.astype(int)
>>> A
array([ 0,  2,  2, -4,  3])

Note: work also with the function rint, example

>>> import numpy as np
>>> A = np.array((0.4, 1.6, 2.1, -3.7, 2.9))
>>> A
array([ 0.4,  1.6,  2.1, -3.7,  2.9])
>>> A = np.rint(A)
>>> A
array([ 0.,  2.,  2., -4.,  3.])
>>> A = A.astype(int)
>>> A
array([ 0,  2,  2, -4,  3])

Truncate the numbers first

>>> import numpy as np
>>> A = np.array((0.4, 1.6, 2.1, -3.7, 2.9))
>>> A
array([ 0.4,  1.6,  2.1, -3.7,  2.9])
>>> A = np.trunc(A)
>>> A
array([ 0.,  1.,  2., -3.,  2.])
>>> A = A.astype(int)
>>> A
array([ 0,  1,  2, -3,  2])

Round to the nearest bigger integer

>>> import numpy as np
>>> A = np.array((0.4, 1.6, 2.1, -3.7, 2.9))
>>> A
array([ 0.4,  1.6,  2.1, -3.7,  2.9])
>>> A = np.ceil(A)
>>> A
array([ 1.,  2.,  3., -3.,  3.])
>>> A = A.astype(int)
>>> A
array([ 1,  2,  3, -3,  3])

Round to the nearest smaller integer

>>> import numpy as np
>>> A = np.array((0.4, 1.6, 2.1, -3.7, 2.9))
>>> A
array([ 0.4,  1.6,  2.1, -3.7,  2.9])
>>> A = np.floor(A)
>>> A
array([ 0.,  1.,  2., -4.,  2.])
>>> A = A.astype(int)
>>> A
array([ 0,  1,  2, -4,  2])

References

Links Site
astype docs.scipy.org
around scipy doc
rint doc scipy
trunc doc scipy
ceil doc scipy
floor doc scipy
How to convert 2D float numpy array to 2D int numpy array? stackoverflow
Rounding scipy doc
Better rounding in Python's NumPy.around: Rounding NumPy Arrays stackoverflow
are numpy array elements rounded automatically? stackoverflow