Comment convertir un tableau 2D float numpy en 2D int numpy array?

Comment convertir un tableau réel numpy en tableau int numpy? Essayé d’utiliser la carte directement à la masortingce mais cela n’a pas fonctionné.

    Utilisez la méthode astype .

     >>> 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]]) 

    Quelques fonctions numpy pour contrôler l’arrondi: rint , floor , trunc , ceil . en fonction de la façon dont vous souhaitez arrondir les flotteurs, vers le haut, le bas ou vers l’int le plus proche.

     >>> 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.]]) 

    Pour créer l’un de ces éléments dans int, ou l’un des autres types de numpy, astype (comme l’a répondu BrenBern):

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

    Si vous n’êtes pas sûr que votre entrée va être un tableau Numpy, vous pouvez utiliser asarray avec dtype=int au lieu de astype :

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

    Si le tableau d’entrée a déjà le bon type, asarray évite la copie du tableau alors que l’ astype ne le fait pas (sauf si vous spécifiez 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 

    vous pouvez utiliser 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]])