Skip to content

NumPy : Arrondir les éléments d’un tableau ndarray (np.floor, trunc, ceil)

Vous pouvez utiliser np.floor(), np.trunc(), np.ceil(), etc. pour arrondir les éléments d’un tableau NumPy ndarray.

Lorsque des valeurs négatives sont prises en compte, il existe quatre types d’arrondi vers le haut et vers le bas.

Cet article décrit le contenu suivant.

  • Arrondir à l’inférieur (= arrondir vers l’infini négatif) :np.floor()
  • Arrondi vers zéro :np.trunc(), np.fix(), cast to int
  • Arrondi vers le haut (= arrondi vers l’infini positif) :np.ceil()
  • Arrondi vers l’infini

Notez que np.rint() et np.around() sont utilisés pour arrondir à pair.

Consultez l’article suivant pour arrondir les décimales vers le haut/vers le bas à l’aide des mathématiques standard de la bibliothèque Python.

Le numpy.ndarray suivant est utilisé dans l’exemple de code.

import numpy as np

print(np.__version__)
# 1.19.4

a = np.array([[10.0, 10.1, 10.9], [-10.0, -10.1, -10.9]])
print(a)
# [[ 10.   10.1  10.9]
#  [-10.  -10.1 -10.9]]

Arrondir à l’inférieur (= arrondir vers l’infini négatif) :np.floor()

Utilisez np.floor() pour arrondir à l’infini négatif.

print(np.floor(a))
# [[ 10.  10.  10.]
#  [-10. -11. -11.]]

print(np.floor(a).dtype)
# float64

Notez que le type de données de la valeur de retour est toujours un nombre à virgule flottante float. Si vous voulez le convertir en entier int, utilisez astype(). Il en va de même pour np.trunc(), np.ceil(), etc. décrits ci-dessous.

print(np.floor(a).astype(int))
# [[ 10  10  10]
#  [-10 -11 -11]]

Il est également possible de spécifier une valeur scalaire. Il en va de même pour np.trunc(), np.ceil(), etc.

print(np.floor(10.1))
# 10.0

Arrondi vers zéro :np.trunc(), np.fix(), cast to int

Utilisez np.trunc() pour arrondir à zéro.

print(np.trunc(a))
# [[ 10.  10.  10.]
#  [-10. -10. -10.]]

np.fix() arrondit également à zéro.

print(np.fix(a))
# [[ 10.  10.  10.]
#  [-10. -10. -10.]]

La conversion du type de données d’un nombre à virgule flottante float en un entier int avec astype() arrondit également à zéro.

print(a.astype(int))
# [[ 10  10  10]
#  [-10 -10 -10]]

Arrondi vers le haut (= arrondi vers l’infini positif) :np.ceil()

Utilisez np.ceil() pour arrondir à l’infini positif.

print(np.ceil(a))
# [[ 10.  11.  11.]
#  [-10. -10. -10.]]

Arrondi vers l’infini

Depuis NumPy 1.20, aucune fonction d’arrondi à l’infini n’est fournie. Par exemple, cela peut être fait comme suit.

print(np.copysign(np.ceil(np.abs(a)), a))
# [[ 10.  11.  11.]
#  [-10. -11. -11.]]

Le ndarray d’origine est converti en valeur absolue avec np.abs(), arrondi avec np.ceil() et renvoyé à son signe d’origine avec np.copysign().