如何在 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 中以二进制格式保存列表/矩阵?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Eigen 中以 MarketIO 格式保存 Eigen::DiagonalMatrix?
如何在 Oracle PLSQL 中以“文本”格式保存 excel 文件?