Advertisement
scarbo

*.py>piratebab>scarbo

Mar 15th, 2015
227
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.57 KB | None | 0 0
  1. #-*-coding:utf-8-*- (C'est le début du fichier..)
  2. # ajuster.py
  3. """
  4. Le problème de la correspondance temps/échantillons est insoluble.  Il
  5. faut ajuster les longueurs des vecteurs par complétion ou amputation.
  6. En cas de complétion on peut compléter avec des zéros ou la dernière
  7. valeur.  Comme la différence ne joue en général que sur qqs
  8. échantillons, je ne prévois pas d'extrapolation.  L'amputation n'a pas
  9. été utilisée - donc j'expulse la fonction.
  10. 'amputer', 'entrelacer', 'prolongerV' sont transférés dans 'zajuster.py'
  11. """
  12.  
  13. __author__ = "Copyright (c) 2010 René Bastian (Wissembourg, FRANCE)"
  14. __date__ = """2006.07.07 Rochefort s/Loire, 2008.03.13 St-Mamert, 2010.06.17,
  15.           2013.02.14"""
  16.  
  17. import numpy as np
  18. import os
  19.  
  20. FLOAT64_ITEMSIZE = 8
  21.  
  22. __all__ = ["prolongerZ", "prolongerN"]
  23.  
  24. def prolongerV(vecteurs):
  25.     """ajoute des zéros aux vecteurs dont la
  26.    dimension est inférieure au plus grand vecteur.
  27.    Est plus lent que prolongerZ"""
  28.     binegal = False
  29.     n = vecteurs[0].size
  30.     for v in vecteurs[1:]:
  31.         if v.size > n:
  32.             n = v.size
  33.             binegal = True
  34.     if binegal:
  35.         C = []
  36.         for v in vecteurs:
  37.             w = np.zeros(n)
  38.             w[:v.size] = v
  39.             C.append(w)
  40.         return C
  41.     else:
  42.         return vecteurs
  43.  
  44. def prolongerZ(vecteurs):
  45.     """vecteurs = liste ou tuple de vecteurs
  46.    ajoute des zéros aux vecteurs dont la
  47.    dimension est inférieure au plus grand vecteur."""
  48.     n = vecteurs[0].size
  49.     for v in vecteurs[1:]:
  50.         if v.size > n:
  51.             n = v.size
  52.     C = []
  53.     #print "prolongerZ(vecteurs)", n
  54.     for v in vecteurs:
  55.         k = n - v.size
  56.         if k > 0:
  57.             z = np.zeros(k)
  58.             v = np.concatenate((v, z))
  59.             #print "après", v.size
  60.         C.append(v)
  61.     #for x in C:
  62.     #    print x.size,
  63.     #print
  64.     return tuple(C)
  65.  
  66. def prolongerZ_ancien(vecteurs):
  67.     """ajoute des zéros aux vecteurs dont la
  68.    dimension est inférieure au plus grand vecteur."""
  69.     n = len(vecteurs[0])
  70.     for v in vecteurs[1:]:
  71.         if len(v) > n:
  72.             n = len(v)
  73.     C = []
  74.     for v in vecteurs:
  75.         k = n - len(v)
  76.         if k > 0:
  77.             z = np.zeros(k)
  78.             v = np.concatenate((v, z))
  79.         C.append(v)
  80.     return tuple(C)
  81.  
  82. def fprolongerZ(listef):
  83.     """
  84.    'listef' : liste de fichiers en format 'np.float64'
  85.    ajoute des 0.0 aux fichiers dont la dimension est inférieure
  86.    au fichier le plus long
  87.    """
  88.     nmax = 0
  89.     for f in listef:
  90.         nf = os.fstat(f.fileno()).st_size
  91.         if nmax < nf:
  92.             nmax = nf
  93.     for f in listef:
  94.         nf = os.fstat(f.fileno()).st_size
  95.         r = nmax - nf
  96.         if r > 0:
  97.             x = np.zeros(r / FLOAT64_ITEMSIZE)
  98.             f.seek(nf)
  99.             x.tofile(f)
  100.  
  101. def prolongerN(vecteurs):
  102.     """ajoute à chaque vecteur autant de fois sa
  103.    dernière valeur pour que tous les vecteurs aient
  104.    la dimension du plus grand vecteur."""
  105.     n = len(vecteurs[0])
  106.     for v in vecteurs[1:]:
  107.         if len(v) > n:
  108.             n = len(v)
  109.     C = []
  110.     for v in vecteurs:
  111.         k = n - len(v)
  112.         if k > 0:
  113.             try:
  114.                 z = np.ones(k) * v[-1]
  115.             except ValueError:
  116.                 print "prolongerN(vecteurs):"
  117.                 print "nombre de valeurs", k, "valeur", v[-1]
  118.                 if not isinstance(v[-1], float):
  119.                     print "objet inconnu", v
  120.             v = np.concatenate((v, z))
  121.         C.append(v)
  122.     return tuple(C)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement