如何在q中读入二进制文件?

时间:2017-05-17 21:34:13

标签: kdb

我的文件有362000个32位浮点数,1000行乘362列,这意味着前362个浮点数对应于第1行,接下来的362个浮点数是第2行,依此类推。在q中有没有办法把它读成一张表?

-Thanks。

1 个答案:

答案 0 :(得分:1)

1:命令可用于读取二进制文件并将其格式化为kdb

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

您可能需要根据字节顺序进行一些调整,请参阅https://code.kx.com/q/ref/filenumbers/#1-binary-files

这将为您提供所有362000 32位浮点数的列表。为了把它变成一张桌子,

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

编辑:实际上,您可以指定您拥有362列

,而不是将其读入列表
reals: (362#4;362#"e") 1: `:fp32file
flip colNames!reals