Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-*-coding:utf-8-*- (C'est le début du fichier..)
- # ajuster.py
- """
- Le problème de la correspondance temps/échantillons est insoluble. Il
- faut ajuster les longueurs des vecteurs par complétion ou amputation.
- En cas de complétion on peut compléter avec des zéros ou la dernière
- valeur. Comme la différence ne joue en général que sur qqs
- échantillons, je ne prévois pas d'extrapolation. L'amputation n'a pas
- été utilisée - donc j'expulse la fonction.
- 'amputer', 'entrelacer', 'prolongerV' sont transférés dans 'zajuster.py'
- """
- __author__ = "Copyright (c) 2010 René Bastian (Wissembourg, FRANCE)"
- __date__ = """2006.07.07 Rochefort s/Loire, 2008.03.13 St-Mamert, 2010.06.17,
- 2013.02.14"""
- import numpy as np
- import os
- FLOAT64_ITEMSIZE = 8
- __all__ = ["prolongerZ", "prolongerN"]
- def prolongerV(vecteurs):
- """ajoute des zéros aux vecteurs dont la
- dimension est inférieure au plus grand vecteur.
- Est plus lent que prolongerZ"""
- binegal = False
- n = vecteurs[0].size
- for v in vecteurs[1:]:
- if v.size > n:
- n = v.size
- binegal = True
- if binegal:
- C = []
- for v in vecteurs:
- w = np.zeros(n)
- w[:v.size] = v
- C.append(w)
- return C
- else:
- return vecteurs
- def prolongerZ(vecteurs):
- """vecteurs = liste ou tuple de vecteurs
- ajoute des zéros aux vecteurs dont la
- dimension est inférieure au plus grand vecteur."""
- n = vecteurs[0].size
- for v in vecteurs[1:]:
- if v.size > n:
- n = v.size
- C = []
- #print "prolongerZ(vecteurs)", n
- for v in vecteurs:
- k = n - v.size
- if k > 0:
- z = np.zeros(k)
- v = np.concatenate((v, z))
- #print "après", v.size
- C.append(v)
- #for x in C:
- # print x.size,
- #print
- return tuple(C)
- def prolongerZ_ancien(vecteurs):
- """ajoute des zéros aux vecteurs dont la
- dimension est inférieure au plus grand vecteur."""
- n = len(vecteurs[0])
- for v in vecteurs[1:]:
- if len(v) > n:
- n = len(v)
- C = []
- for v in vecteurs:
- k = n - len(v)
- if k > 0:
- z = np.zeros(k)
- v = np.concatenate((v, z))
- C.append(v)
- return tuple(C)
- def fprolongerZ(listef):
- """
- 'listef' : liste de fichiers en format 'np.float64'
- ajoute des 0.0 aux fichiers dont la dimension est inférieure
- au fichier le plus long
- """
- nmax = 0
- for f in listef:
- nf = os.fstat(f.fileno()).st_size
- if nmax < nf:
- nmax = nf
- for f in listef:
- nf = os.fstat(f.fileno()).st_size
- r = nmax - nf
- if r > 0:
- x = np.zeros(r / FLOAT64_ITEMSIZE)
- f.seek(nf)
- x.tofile(f)
- def prolongerN(vecteurs):
- """ajoute à chaque vecteur autant de fois sa
- dernière valeur pour que tous les vecteurs aient
- la dimension du plus grand vecteur."""
- n = len(vecteurs[0])
- for v in vecteurs[1:]:
- if len(v) > n:
- n = len(v)
- C = []
- for v in vecteurs:
- k = n - len(v)
- if k > 0:
- try:
- z = np.ones(k) * v[-1]
- except ValueError:
- print "prolongerN(vecteurs):"
- print "nombre de valeurs", k, "valeur", v[-1]
- if not isinstance(v[-1], float):
- print "objet inconnu", v
- v = np.concatenate((v, z))
- C.append(v)
- return tuple(C)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement