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 du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2010
    Messages
    297
    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 : 297
    Points : 66
    Points
    66
    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
    -----
    enseigner les maths : tout un art
    www.mathoscope.xyz

  2. #2
    Membre averti
    Homme Profil pro
    BTS SNIR (système numérique option info & réseau)
    Inscrit en
    mai 2017
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 20
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SNIR (système numérique option info & réseau)

    Informations forums :
    Inscription : mai 2017
    Messages : 294
    Points : 353
    Points
    353
    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
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 463
    Points : 24 460
    Points
    24 460
    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 expérimenté

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    mars 2013
    Messages
    804
    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 : 804
    Points : 1 597
    Points
    1 597
    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
    Modérateur

    Homme Profil pro
    Architecte technique
    Inscrit en
    juin 2008
    Messages
    14 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 14 463
    Points : 24 460
    Points
    24 460
    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 expérimenté

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    mars 2013
    Messages
    804
    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 : 804
    Points : 1 597
    Points
    1 597
    Par défaut
    Oui précision importante en effet !

  7. #7
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2010
    Messages
    297
    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 : 297
    Points : 66
    Points
    66
    Par défaut
    merci de vos éclaircissements !
    -----
    enseigner les maths : tout un art
    www.mathoscope.xyz

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