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

How can I read in a binary file in q?

我有一个包含 362000 个 32 位浮点数的文件,它的 1000 行乘以 362 列,这意味着前 362 个浮点数对应于第 1 行,接下来的 362 个浮点数对应于第 2 行,依此类推。 q 中有没有办法将其读入 table?

-谢谢。

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

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

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

这将为您提供所有 362000 个 32 位浮点数的列表。把它变成 table,

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