Wie sollte ich die Numpy ist vstack Methode?
Erstens, hier ist der relevante Teil des Codes:
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))
Also, im Grunde, jedes mal, wenn der code Schlingen um, stokes_line
zieht eine der Spalten (4.) aus der Datei temp.txt
, und ich möchte das es eine Zeile hinzufügen, um stokes_list
jeder Zeit.
Zum Beispiel, wenn der erste stokes_line
ist
1.1 2.2 3.3
ist und die zweite
4.4 5.5 6.6
dann stokes_list
werden
1.1 2.2 3.3
4.4 5.5 6.6
und werden weiter wachsen...
Es nicht funktioniert im moment, weil ich denke, dass die Zeile:
stokes_list = np.vstack((stokes_line,stokes_line))
ist nicht korrekt. Es ist nur stapeln von 2 Listen - was Sinn macht, da ich nur 2 Argumente. Ich habe im Grunde würde gerne wissen, wie ich halten, stapeln, wieder und wieder.
Jede Hilfe wäre sehr dankbar angenommen!
Wenn es erforderlich ist, hier ist ein Beispiel für das format der temp.txt Datei:
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
vstack
ing wieder und wieder nicht gut, weil es kopiert die ganzen arrays.Erstellen Sie eine normale Python -
list
,.append
auf und dann pass es ganz zunp.vstack
zum erstellen eines neuen array einmal.Kennen Sie bereits die endgültige Größe des
stokes_list
array, da Sie wissennumrows
. So es scheint, dass Sie nicht brauchen, um zu wachsen ein array (das ist sehr ineffizient). Sie können, weisen Sie einfach die richtige Zeile bei jeder iteration.Ersetzen Sie einfach Ihre Letzte Zeile von :
Durch die Art und Weise, über Ihre non-working line ich denke, du meintest :
wo Sie ersetzen
stokes_list
durch den neuen Wert.numrows
bekannt vor (wie in diesem Fall).