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

Python Discussion :

Référence croisées dans une grosse matrice


Sujet :

Python

  1. #1
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut Référence croisées dans une grosse matrice
    Bonjour à tous

    Je viens demander vos conseils avisés à propos d'outils permettant de référencer rapidement des informations dans une matrice de nombres (décimaux en plus)

    Je dois en effet gérer une matrice d'environ 7 champs décimaux et comportant parfois jusqu'à 100000 lignes. Et je dois référencer (par exemple) toutes les valeurs des 2°, 3° et 5° champs et les lignes où sont ces valeurs

    Si par exemple ma matrice est faite ainsi
    1, 2, 3, 4, 12, 18, 20
    2, 2, 4, 7, 14, 55, 42
    3, 3, 4, 11, 55, 123, 700

    Ben je dois alors référencer
    2, [1, 2] (le second champ ayant la valeur "2" est attribué aux lignes 1 et 2)
    3, [3] (le second champ ayant la valeur "3" est attribué à la ligne 3)

    Mais aussi
    3, [1] (le troisième champ ayant la valeur "3" est attribué à la ligne 1)
    4, [2, 3] (le troisième champ ayant la valeur "4" est attribué aux lignes ligne 2 et 3)

    Et aussi sur un 3° champ. Et ce n'est pas figé dans le marbre. Pour l'instant le cahier des charges s'arrête à 3 champs mais peut-être que plus tard il en faudra un 4°, un 5°...

    Dans une première version je suis parti sur les boucles classiques. Un tableau de lignes, puis pour chaque ligne je récupère le 2°, 3° et 4° champs et j'ai des tableaux annexes que j'incrémente au fur et à mesure. Alors tant que j'étais à 2 champs ça allait encore mais quand j'en ai eu un 3°, les perfos se sont effondrées (près de 4mn pour traiter 100000 lignes). Surtout que l'utilisateur a la possibilité de désactiver telle valeur. Si par exemple il décide de désactiver la valeur 4 du 3° champ, me faut alors désactiver toutes les lignes ayant ce 3° champ à 4 puis refaire un calcul n'utilisant alors que les lignes restées actives. Et rebelote ça repart pour 4mn.
    J'ai un peu cherché du coté de numpy mais il me semble que ce module est plus dédié à la manipulation de matrices que le référencement tel que je le présente ici.

    Pour l'instant ma solution a été une bdd sqlite. Je bazarde mes lignes dans une table, et j'ai d'autres tables dédiées pour chaque champ. Là ça va assez vite car je m'appuie alors sur du requêtage sql pour désactiver les lignes ayant tel champ à telle valeur et une autre requête pour retraiter celles qui restent. Je descends mes perfs à la minute pour traiter 100000 lignes. Mais je venais ici voir à tout hasard si quelqu'un connaitrait une librairie plus dédiée à ce travail qui me permettrait d'aller encore plus vite.

    Voilà - Merci à tous de votre attention

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 349
    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 349
    Points : 36 872
    Points
    36 872
    Par défaut
    Salut,

    Aucune idée de module adhoc mais:
    Citation Envoyé par Sve@r Voir le message
    Pour l'instant ma solution a été une bdd sqlite. Je bazarde mes lignes dans une table, et j'ai d'autres tables dédiées pour chaque champ. Là ça va assez vite car je m'appuie alors sur du requêtage sql pour désactiver les lignes ayant tel champ à telle valeur et une autre requête pour retraiter celles qui restent. Je descends mes perfs à la minute pour traiter 100000 lignes. Mais je venais ici voir à tout hasard si quelqu'un connaitrait une librairie plus dédiée à ce travail qui me permettrait d'aller encore plus vite.
    J'essaierai avec la base de donnée en mémoire et des index pour les colonnes 2, 3, 4.

    - W

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Aucune idée de module adhoc
    Je pensais par exemple à des outils comme MongoDB

    Citation Envoyé par wiztricks Voir le message
    J'essaierais avec la base de donnée en mémoire et des index pour les colonnes 2, 3, 4.
    Bien vu - J'y avais pensé aussi. J'ai effectivement des index exactement aux colonnes mentionnées

    Merci de ton retour

Discussions similaires

  1. Ecrire une grosse matrice dans un fichier texte
    Par Fatehcz dans le forum MATLAB
    Réponses: 1
    Dernier message: 29/06/2015, 17h01
  2. Réponses: 7
    Dernier message: 22/06/2014, 01h01
  3. Réponses: 2
    Dernier message: 08/04/2005, 14h23
  4. [liste] référence unique dans une liste
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 3
    Dernier message: 29/03/2005, 09h57
  5. problème de références _ptr dans une map STL
    Par Mr_Tyu dans le forum CORBA
    Réponses: 1
    Dernier message: 10/08/2004, 10h39

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