How to convert real numpy array to int numpy array? Tried using map directly to array but it did not work.

2021-01-17

# python – How to convert 2D float numpy array to 2D int numpy array?

## The Question :

*336 people think this question is useful*

*The Question Comments :*

## The Answer 1

*441 people think this answer is useful*

Use the `astype`

method.

>>> x = np.array([[1.0, 2.3], [1.3, 2.9]]) >>> x array([[ 1. , 2.3], [ 1.3, 2.9]]) >>> x.astype(int) array([[1, 2], [1, 2]])

## The Answer 2

*70 people think this answer is useful*

Some numpy functions for how to control the rounding: rint, floor,trunc, ceil. depending how u wish to round the floats, up, down, or to the nearest int.

>>> x = np.array([[1.0,2.3],[1.3,2.9]]) >>> x array([[ 1. , 2.3], [ 1.3, 2.9]]) >>> y = np.trunc(x) >>> y array([[ 1., 2.], [ 1., 2.]]) >>> z = np.ceil(x) >>> z array([[ 1., 3.], [ 2., 3.]]) >>> t = np.floor(x) >>> t array([[ 1., 2.], [ 1., 2.]]) >>> a = np.rint(x) >>> a array([[ 1., 2.], [ 1., 3.]])

To make one of this in to int, or one of the other types in numpy, astype (as answered by BrenBern):

a.astype(int) array([[1, 2], [1, 3]]) >>> y.astype(int) array([[1, 2], [1, 2]])

## The Answer 3

*18 people think this answer is useful*

you can use `np.int_`

:

>>> x = np.array([[1.0, 2.3], [1.3, 2.9]]) >>> x array([[ 1. , 2.3], [ 1.3, 2.9]]) >>> np.int_(x) array([[1, 2], [1, 2]])

## The Answer 4

*13 people think this answer is useful*

If you’re not sure your input is going to be a Numpy array, you can use `asarray`

with `dtype=int`

instead of `astype`

:

>>> np.asarray([1,2,3,4], dtype=int) array([1, 2, 3, 4])

If the input array already has the correct dtype, `asarray`

avoids the array copy while `astype`

does not (unless you specify `copy=False`

):

>>> a = np.array([1,2,3,4]) >>> a is np.asarray(a) # no copy :) True >>> a is a.astype(int) # copy :( False >>> a is a.astype(int, copy=False) # no copy :) True