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 :

[Numpy] Construction d'un tableau à partir de la différence entre deux vecteur


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut [Numpy] Construction d'un tableau à partir de la différence entre deux vecteur
    Bonjour,
    Je suis confronté à un petit problème lors de l'utilisation de numpy, et après recherches, me demandait si quelqu'un d'entre vous aurait une idée bien sympathique. Mon problème est le suivant:
    J'aimerais construire une M matrice basée sur la différence des valeurs d'un vecteur V. Je m'explique:
    La composante Mij devrait contenir la différence entre la valeur Vi et Vj.
    Je me retrouverai donc avec une matrice a diagonale nulle et antisymétrique.
    Détail supplémentaire... les entrées de V sont en faite des couples [Vi1, Vi2], et la matrice finale devrait également contenir les couples des différences
    (C'est pas très grave si ça complique trop, je peux toujours décomposer le calcul sur deux plans).
    Mon but est d'éviter si possible l'utilisation de boucles for, car ce genre de calcul est exécuté un grand nombre de fois par itérations. D'où ma recherche (jusqu'ici sans succès,) d'une syntaxe "à la Matlab", permettant de tirer profit de la puissance des routines de numpy, en se basant sur une formulation matricielle.
    Je précise finalement que l'utilisation de la classe array ou matrix me va.

    Voilà, je remercie d'avance les gens qui auront prit le temps de lire tout ceci,... et comprend bien les autres

    Amicalement,

    Mirox

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonsoir,

    je peux te proposer quelque chose comme ceci, probablement pas optimal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> import numpy as np
    >>> V = np.array([0, 1, 2, 3])
    >>> A = np.zeros((4, 4))
    >>> A + V - (A + V.reshape(4,1))
    array([[ 0.,  1.,  2.,  3.],
           [-1.,  0.,  1.,  2.],
           [-2., -1.,  0.,  1.],
           [-3., -2., -1.,  0.]])

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2010
    Messages : 4
    Par défaut
    Merci Kango,
    Après une nuit de bidouillage (), je suis arrivé ce matin à une méthode similaire à la tienne.
    Pour les intéressés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    >>> import numpy as np
    >>> V = np.array([1,2, 3, 4])
    >>> A = np.zeros((4, 4))
    >>> A=A+V
    >>>A - A.T
    array([[ 0.,  1.,  2.,  3.],
           [-1.,  0.,  1.,  2.],
           [-2., -1.,  0.,  1.],
           [-3., -2., -1.,  0.]])
    qui me satisfait très bien
    Merci encore pour ton aide,

    Bonne week end

    Mirox

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Tu peux utiliser np.newaxis et utiliser le "broadcast" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    V = np.array([1,2, 3, 4])
    V[:,np.newaxis] - V[np.newaxis]
    Pour précision ceci est équivalent à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    V = np.array([1,2, 3, 4])
    V.reshape(V.size,1) - V.reshape(1,V.size)

Discussions similaires

  1. [MySQL] Construction d'un tableau à partir des données de la base
    Par the--first dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/08/2008, 20h50
  2. Réponses: 2
    Dernier message: 08/04/2007, 22h49
  3. [Requête]Affichage d'un tableau à partir de 2 tables SQL
    Par sp4ever dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/10/2005, 11h32
  4. Réponses: 6
    Dernier message: 07/06/2005, 16h19
  5. [XSLT] Créer un tableau à partir de sa description
    Par Skyou dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 20/03/2005, 20h01

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