Comment arrondir tous les éléments d'une matrice avec numpy en python ?

Active 02 décembre 2014    /    Viewed 8829    /    Comments 0    /    Edit


Exemples de comment arrondir tous les éléments d'une matrice avec numpy en python

Créer une matrice de float avec numpy

Créons d'abord une matrice de float avec numpy

import numpy as np

data = np.random.rand(4,5) * 100.0

donne par exemple

array([[ 0.54545428, 62.89794368, 50.60548232, 57.47598712, 11.78324876],
       [57.10987983, 19.58684319,  7.67338724, 10.76866391, 90.78997325],
       [62.25706073, 42.60884215, 58.72412611, 91.84459902, 26.1276944 ],
       [ 6.51345784, 76.53505447, 71.20775378, 56.07274006, 79.39644899]])

Arrondir tous les éléments d'une matrice avec numpy

Pour arrondir tous les éléments d'une matrice avec numpy, une solution consiste à utiliser numpy.matrix.round, exemple round avec 2 décimales :

np.round(data,2)

donne

array([[ 0.55, 62.9 , 50.61, 57.48, 11.78],
       [57.11, 19.59,  7.67, 10.77, 90.79],
       [62.26, 42.61, 58.72, 91.84, 26.13],
       [ 6.51, 76.54, 71.21, 56.07, 79.4 ]])

exemple d'arrondi avec 1 décimales :

np.round(data,1)

donne

array([[ 0.5, 62.9, 50.6, 57.5, 11.8],
       [57.1, 19.6,  7.7, 10.8, 90.8],
       [62.3, 42.6, 58.7, 91.8, 26.1],
       [ 6.5, 76.5, 71.2, 56.1, 79.4]])

exemple d'arrondi avec 0 décimales :

np.round(data,0)

donne

array([[ 1., 63., 51., 57., 12.],
       [57., 20.,  8., 11., 91.],
       [62., 43., 59., 92., 26.],
       [ 7., 77., 71., 56., 79.]])

Convertir une matrice de flottants en entiers

Une autre solution consiste à convertir la matrice de flottants en nombres entiers avec astype(int):

data.astype(int)

donne

array([[ 0, 62, 50, 57, 11],
       [57, 19,  7, 10, 90],
       [62, 42, 58, 91, 26],
       [ 6, 76, 71, 56, 79]])

Références


Card image cap
profile-image
Daidalos

Hi, I am Ben.

I have developed this web site from scratch with Django to share with everyone my notes. If you have any ideas or suggestions to improve the site, let me know ! (you can contact me using the form in the welcome page). Thanks!