如何在 KDB 中以二进制格式保存列表/矩阵?

Posted

技术标签:

【中文标题】如何在 KDB 中以二进制格式保存列表/矩阵?【英文标题】:How can i save a list/matrix in binary format in KDB? 【发布时间】:2019-12-30 11:55:29 【问题描述】:

我正在尝试 save 和 matrix 以二进制格式在 KDB 中按以下方式归档:

matrix: (til 10)*/:til 10;
save matrix;

但是,我收到错误 'type

我猜save 只适用于表格?在哪种情况下有人知道解决方法吗?

最后,我想用NumPy将二进制文件中的矩阵读入Python,我想这只是:

import numpy as np
matrix = np.fromfile('C:/q/w32/matrix', dtype='f')

是吗?

注意:我知道KDB-Python libraries,但目前无法安装它们。

【问题讨论】:

【参考方案1】:

save 确实有效,您只需按名称引用它。

save`matrix

你也可以使用

`:matrix set matrix;
`:matrix 1: matrix;

但我认为您不能直接使用 numpy 将其读入 python,因为它以 kdb 格式存储。可以使用 python-kdb 接口之一(例如 PyQ)将其读入 python,也可以将其存储为通用格式,例如 csv。

【讨论】:

【参考方案2】:

另一种选择是以 KDB+ IPC 格式保存,然后使用 qPython 作为 Pandas DataFrame 将其读入 Python。 在 KDB+ 方面,您可以将其保存为

matrix:(til 10)*/:til 10;
`:matrix.ipc 1: -8!matrix;

在 Python 方面你做的

from pandas import DataFrame
from qpython.qreader import QReader

with open('matrix.ipc',"rb") as f:
    matrix = DataFrame(QReader(f).read().data)

print(matrix)

【讨论】:

以上是关于如何在 KDB 中以二进制格式保存列表/矩阵?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 numpy 矩阵中以科学形式显示数字?

如何在 Eigen 中以 MarketIO 格式保存 Eigen::DiagonalMatrix?

如何在 Oracle PLSQL 中以“文本”格式保存 excel 文件?

如何在 MATLAB 中以 *.dat 格式导出图像

如何在 Drupal 中以页面的形式更改“视图”的“日期字段”格式?

如何以特定格式在 Julia 中保存数组或矩阵?