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 :

Indice d'une matrice dans une autre matrice


Sujet :

Calcul scientifique Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 61
    Points : 33
    Points
    33
    Par défaut Indice d'une matrice dans une autre matrice
    Bonjour, je souhaiterais pour un indice t donné prendre la valeur qui est dans une matrice et faire de cette valeur l'indice d'une autre matrice, voici un bout de mon code : (K et E sont des entier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ce=np.loadtxt('data.txt',dtype=float)
    parameters=np.loadtxt('simulation_input_C.txt',dtype=float)
    Z=matlabarray(cat(parameters[28],parameters[31],parameters[34]))
    S=(ce[Z[t]]*K)*sqrt(E)
    Ce message d'erreur apparait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    S=(ce[Z[t]]*K)*sqrt(E)
    IndexError: arrays used as indices must be of integer (or boolean)
    Je comprend bien le problème il s'agit de ce[Z[t]], il faudrait définir le dtype comme dtype=np.int8 mais ça ne marche pas, je ne vois pas trop comment faire. Auriez-vous une idée ? Merci beaucoup

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Z est créé avec matlabarray(), et n'est donc pas un entier comme vous l'avez remarqué. Si vous affichez ce Z à quoi ressemble-t-il (print(Z))? Par curiosité matlabarray() vient d'où?

    J

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Salut Oui Z me renvoie une matrice : [[14. 1. 12.]] et après je voudrais prendre soit Z[1], Z[2] ou Z[3] donc selon t, ce qui ferait ce[14], ce[1] ou ce[12]. logiquement ça devrait ce faire tout seul non ?
    matlabarray est une réduction pour créer une matrice, c'est intégré à SMOP https://github.com/victorlei/smop (Small Matlab to Python compiler)

  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
    astype convient je pense pour convertir ton tableau de floatant en tableau d'entier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> x = np.array([1, 2, 2.5])
    >>> x
    array([ 1. ,  2. ,  2.5])
     
    >>> x.astype(int)
    array([1, 2, 2])

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Salut, j'ai essayé astype ça fonctionne quand je remplace t par 1, 2 ou 3 directement dans S ! mais si je laisse ce[Z[t]] j'ai toujours la même erreur. Le problème c'est que t va varier entre ces nombres donc je suis obligé de laisser ce[Z[t]] et là ça me met l'erreur..

  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
    donc si le problème n'est pas sur Z mais sur t, tout simplement écrire int(t) ...

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Septembre 2018
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Zélande

    Informations professionnelles :
    Activité : Chargé de référencement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2018
    Messages : 61
    Points : 33
    Points
    33
    Par défaut
    Oui merci bcp ça marche bien !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2012, 14h19
  2. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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