Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

nombres entiers dans un array de numpy


Sujet :

Calcul scientifique Python

  1. #1
    Membre régulier
    nombres entiers dans un array de numpy
    bonjour
    j'ai tapé ceci
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from numpy import *
    a=array([(1,2)])
    a[0,0]=a[0,0]/2
    a

    la réponse est :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    array([[0, 2]])

    je ne comprend pas pourquoi numpy arrondit à l'unité
    Sauriez vous m'éclairer ?
    merci
    -----
    enseigner les maths : tout un art
    www.mathoscope.xyz

  2. #2
    Membre éclairé
    bonjour,

    Il faut explicitement dire à numpy le type de donnée.

    un exemple
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    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. ])
    >>>


    ps from x import * n'est pas une bonne pratique car il y a fort à parier qu'un jour on fasse du shadowing

  3. #3
    Expert éminent sénior
    Salut,

    Citation Envoyé par elodouwen Voir le message
    je ne comprend pas pourquoi numpy arrondit à l'unité
    Si vous assignez une valeur "décimale" à un tableau d'entier, il va bien falloir se débarrasser de la partie décimale. Ne garder que la partie entière est l'option par défaut. Si vous voulez autre chose, il faut le préciser.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Membre chevronné
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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

  5. #5
    Expert éminent sénior
    Salut,

    Citation Envoyé par lg_53 Voir le message
    si vous avez que des entier, python reste avec des entiers et fait donc des opérations entières.
    C'est pas si simple:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    >>> a=np.array([(1,2)])
    >>> print( a[0,0]/2 )
    0.5

    => Python fabrique un float.
    Par contre, si on demande à numpy de stocker ce nombre flottant dans un tableau de "int"...:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> a[0,0] = 0.5
    >>> a
    array([[0, 2]])
    >>>

    seule la partie entière sera stockée (et non l'arrondi, si c'était ce qu'on voulait).
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre chevronné
    Oui précision importante en effet !

  7. #7
    Membre régulier
    merci de vos éclaircissements !
    -----
    enseigner les maths : tout un art
    www.mathoscope.xyz

###raw>template_hook.ano_emploi###