2016-11-30 6 views
1

ich ein ndarray aus einer txt-Datei erstellt numpy.genfromtxt verwenden. Die TXT-Datei wie folgt aussieht:Einfügen von Spalten in ndarray mit erstellt numpy.genfromtxt

2505000 
10.316  1.936  0.025 0 15 0 0 
10.316  1.937  0.028 0 15 0 0 
10.316  1.943  0.028 0 15 0 0 
10.316  1.954  0.022 0 9 58 0 
10.316  1.955  0.026 0 9 58 0 

ich das Lesen leite die Daten mit:

data = np.genfromtxt(fname, 
        skip_header =1, 
        dtype = [('X','f'),('Y','f'),('Z','f'),('V', 'i'),('T', 'i')], 
        usecols = (0,1,2,4,5)) 

ich jetzt versuchen, die vierte Spalte (die, die ich V genannt) zu kopieren und legen Sie ihn einfach nach selbst (vor der letzten T Spalte).

Ich weiß, dass ich die Spalte kopieren kann, indem Sie data['V'] tun, aber wie platziere ich diese Kopie zwischen V und T (die 4. und 5. Spalten)? Ich habe mich numpy.insert angesehen, aber ich bin nicht sicher, wie man den Index angibt (das obj Argument). Ich versuchte mit numpy.insert(data_copy, data_copy['T'],data_copy['V']) ohne Glück (ich erhielt IndexError: index 61 is out of bounds for size 20).

+0

Sie haben eine neue dtype mit dem zusätzlichen Feld zu machen, und kopieren Sie Werte von Feldnamen aus dem ursprünglichen Array zu der Neue. – hpaulj

+1

Schauen Sie sich 'von numpy.lib Importfunktionen 'an. http://stackoverflow.com/a/27952861/901925 – hpaulj

+0

@hpaulj danke, ich durch die Kombination von recfunctions.append_fields und recfunctions.drop_fields gelöst, obwohl ich nicht eine Insert Position angeben. Wenn keine andere Lösung gefunden wird und Sie Ihren Kommentar gerne beantworten möchten, würde ich mich freuen, ihn zu akzeptieren. – umbe1987

Antwort

1

Sie müssen ein neues dtype mit dem hinzugefügten Feld erstellen und Werte nach Feldname aus dem ursprünglichen Array in das neue kopieren.

recfunctions haben Funktionen diesen (und damit verbundene Aktionen) zu tun:

from numpy.lib import recfunctions 

numpy dtype error - (structured array creation)

Verwandte Themen