2017-05-17 1 views
0

Ich habe eine Datei, die 362000 32bit Floats hat, ihre 1000 Zeilen von 362 Spalten, was es bedeutet, ist die erste 362 Floats Zeile 1 entsprechen, und die nächste 362 Floats ist Zeile 2, und so weiter. Gibt es einen Weg in q, um dies in eine Tabelle zu lesen?Wie kann ich eine Binärdatei in q einlesen?

-Danke.

+1

Können Sie eine zweizeilige laden Probe? – terrylynch

Antwort

1

Der 1: Befehl kann verwendet werden, um binäre Dateien in KDB

reals: (enlist 4;enlist"e') 1: `:fp32file 

Sie können einige Anpassungen müssen auf endianness basierend zu lesen und zu formatieren, siehe https://code.kx.com/q/ref/filenumbers/#1-binary-files

Dies Ihnen alle 362000 eine Liste geben 32 Bit schwebt. Um das in eine Tabelle,

colNames: `$"col",/:string til 362/or whatever your column names are 
reals: flip 362 cut raze reals/turn list into a 362x1000 array 
flip colNames!reals/create a dictionary, convert to table 

EDIT: Eigentlich statt es in eine Liste zu lesen, können Sie angeben, dass Sie 362 Spalten haben mit

reals: (362#4;362#"e") 1: `:fp32file 
flip colNames!reals 
+0

Danke, hat perfekt funktioniert. – Roman

Verwandte Themen