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

时间:2019-12-30 11:55:29

标签: python list numpy save kdb

我正尝试savematrix以二进制格式在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,但到目前为止无法安装它们。

2 个答案:

答案 0 :(得分:1)

D/NetworkSecurityConfig: Using Network Security Config from resource network_security_config debugBuild: true 2019-12-30 17:25:13.915 17273-17273/com.example.ish D/Fail: CLEARTEXT communication not supported: [ConnectionSpec(cipherSuites=[TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA], tlsVersions=[TLS_1_2, TLS_1_1, TLS_1_0], supportsTlsExtensions=true), ConnectionSpec(cipherSuites=[TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA], tlsVersions=[TLS_1_0], supportsTlsExtensions=true)] 确实有效,您只需要按名称引用即可。

save

您还可以使用保存

save`matrix

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

答案 1 :(得分:0)

另一个选择是保存为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)