comment utiliser numpy vstack
J'ai passé du temps sur cette (simple) du code Python, et grâce à ce forum, je suis presque là. J'espère vraiment que quelqu'un peut m'en droit de l'obtenir 100% de travail!
Tout d'abord, voici la partie du code:
stokes_list = np.zeros(shape=(numrows,1024)) # 'numrows' defined earlier
for i in range(numrows):
epoch_name = y['filename'][i] # 'y' is an array from earlier
os.system('pdv -t {0} > temp.txt '.format(epoch_name)) # 'pdv' is a command from another piece of software - here I copy the output into a temporary file
stokes_line = np.genfromtxt('temp.txt', usecols=3, dtype=[('stokesI','float')], skip_header=1)
stokes_list = np.vstack((stokes_line,stokes_line))
Donc, fondamentalement, chaque fois que le code de la boucle autour de, stokes_line tire l'une des colonnes (4) à partir du fichier 'temp.txt" et je tiens à ajouter une ligne à 'stokes_list' à chaque fois.
Par exemple, si le premier stokes_line
est
1.1 2.2 3.3
et la deuxième est
4.4 5.5 6.6
puis stokes_list
sera
1.1 2.2 3.3
4.4 5.5 6.6
et va continuer de croître...
Il ne fonctionne pas pour le moment, parce que je pense que la ligne:
stokes_list = np.vstack((stokes_line,stokes_line))
n'est pas correct. C'est seulement de l'empilement de 2 listes - qui n'a de sens que je n'ai que 2 arguments. En gros, je voudrais savoir comment je continuer à accumuler encore et encore.
Toute aide serait la bienvenue!
S'il est nécessaire, ici, est un exemple du format de l'temp.txt fichier:
File: t091110_065921.SFTC Src: J1903+0925 Nsub: 1 Nch: 1 Npol: 4 Nbin: 1024 RMS: 0.00118753
0 0 0 0.00148099 -0.00143755 0.000931365 -0.00296775
0 0 1 0.000647476 -0.000896698 0.000171287 0.00218597
0 0 2 0.000704697 -0.00052846 -0.000603842 -0.000868739
0 0 3 0.000773361 -0.00234724 -0.0004112 0.00358033
0 0 4 0.00101559 -0.000691062 0.000196023 -0.000163109
0 0 5 -0.000220367 -0.000944024 0.000181002 -0.00268215
0 0 6 0.000311783 0.00191545 -0.00143816 -0.00213856
OriginalL'auteur user1551817 | 2012-09-06
Vous devez vous connecter pour publier un commentaire.
vstack
ing, encore et encore, n'est pas bon, car il copie l'ensemble des tableaux.Créer une normal Python
list
,.append
de et de le passer ensemble ànp.vstack
pour créer un nouveau tableau à la fois.+1 pour le "ne pas mettre vstack dans une boucle".
OriginalL'auteur eumiro
Vous connaissez déjà la taille finale de l'
stokes_list
tableau puisque vous saveznumrows
. Donc, il semble que vous n'avez pas besoin de grandir un tableau (ce qui est très inefficace). Vous pouvez simplement affecter la bonne ligne à chaque itération.Il suffit de remplacer votre dernière ligne par :
En passant, à propos de votre travail non-ligne je pense que vous vouliez dire :
où vous êtes en remplacement de
stokes_list
par sa nouvelle valeur.numrows
est connu avant (comme dans ce cas).Merci!!!! C'est génial!
OriginalL'auteur Nicolas Barbey