bonjour
j'ai tapé ceci
la réponse est :Code:
1
2
3
4 from numpy import * a=array([(1,2)]) a[0,0]=a[0,0]/2 a
je ne comprend pas pourquoi numpy arrondit à l'unitéCode:array([[0, 2]])
Sauriez vous m'éclairer ?
merci
Version imprimable
bonjour
j'ai tapé ceci
la réponse est :Code:
1
2
3
4 from numpy import * a=array([(1,2)]) a[0,0]=a[0,0]/2 a
je ne comprend pas pourquoi numpy arrondit à l'unitéCode:array([[0, 2]])
Sauriez vous m'éclairer ?
merci
bonjour,
Il faut explicitement dire à numpy le type de donnée.
un exemple
ps from x import * n'est pas une bonne pratique car il y a fort à parier qu'un jour on fasse du shadowingCode:
1
2
3
4
5
6
7
8 >>> import numpy >>> a = numpy.array([1, 2], dtype=float) >>> a array([1., 2.]) >>> a /= 2 >>> a array([0.5, 1. ]) >>>
si vous avez que des entier, python reste avec des entiers et fait donc des opérations entières. A partir du moment où vous avez un décimal dans l'histoire, python transforme tout en décimal.
Exécuter ceci vous comprendrez :
Code:
1
2
3
4
5
6
7
8
9
10
11
12 import numpy as np a=np.array([(1,2)]) b = np.array([1, 2], dtype=float) c = np.array([1.0, 2.0]) print( a[0,0]/2 ) ### int / int => int print( b[0,0]/2 ) ### float / int => float print( c[0,0]/2 ) ### float / int => float print( a[0,0]/2.0 ) ### int / float => float print( b[0,0]/2.0 ) ### float / float => float print( c[0,0]/2.0 ) ### float / float => float
Salut,
C'est pas si simple:
=> Python fabrique un float.Code:
1
2
3 >>> a=np.array([(1,2)]) >>> print( a[0,0]/2 ) 0.5
Par contre, si on demande à numpy de stocker ce nombre flottant dans un tableau de "int"...:
seule la partie entière sera stockée (et non l'arrondi, si c'était ce qu'on voulait).Code:
1
2
3
4 >>> a[0,0] = 0.5 >>> a array([[0, 2]]) >>>
- W
Oui précision importante en effet !
merci de vos éclaircissements !