IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut 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 :
    je ne comprend pas pourquoi numpy arrondit à l'unité
    Sauriez vous m'éclairer ?
    merci

  2. #2
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 513
    Points : 700
    Points
    700
    Par défaut
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    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 émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    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
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 239
    Points : 36 692
    Points
    36 692
    Par défaut
    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 émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Oui précision importante en effet !

  7. #7
    Membre régulier
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 406
    Points : 92
    Points
    92
    Par défaut
    merci de vos éclaircissements !

Discussions similaires

  1. Ne permettre que la saisie d'un nombre entier dans un input
    Par joel.drigo dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 28/09/2017, 22h14
  2. [Turbo Pascal] Insertion d'un nombre entier dans un tableau trié
    Par FASTWERO dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 05/05/2014, 21h40
  3. [AC-2010] Contourner prise en compte d'un nombre entier dans DiffDate
    Par Khask dans le forum Access
    Réponses: 2
    Dernier message: 03/09/2013, 14h52
  4. Trouver un nombre entier dans une colonne
    Par k4lls dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/01/2012, 05h13
  5. [PHP 5.2] Additionner des nombres entiers dans une chaine de caractères
    Par lecaptain dans le forum Langage
    Réponses: 2
    Dernier message: 23/10/2009, 13h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo