python - PyQ 中的 Kdb 数据库到 NumPy 数组

标签 python python-3.x numpy kdb pyq

我有一个包含符号、 float 和时间戳的展开 Kdb 数据库。我想将其转换为 NumPy 数组。但是使用以下代码...

>>> import numpy as np
>>> from pyq import q
>>> d = q.load(':alpha/HDB/')
>>> a = np.array(d)

返回此错误...

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/marrowgari/py3/lib/python3.6/site-packages/pyq/_n.py", line 158, in array
return numpy.array(list(self), dtype)
TypeError: iteration over a K scalar, t=-11

这是因为 Kdb 符号类型在 NumPy 中没有直接的类似物吗?如果是这样,我该如何纠正这个问题?

最佳答案

假设您的 HDB 创建如下:

q)(` sv db,`t`)set .Q.en[db:`:alpha/HDB]([]sym:`A`B`C;a:1 2 3)
`:alpha/HDB/t/
q)\l alpha/HDB
q)t
sym a
-----
A   1
B   2
C   3

然后,首先您应该使用 \l 命令加载它,而不是加载函数:

>>> q('\\l alpha/HDB')
k('::')

这将加载您的所有表和枚举域。

现在您应该能够将表的 sym 列转换为 numpy 字符串数组

>>> np.array(q.t.sym)
array(['A', 'B', 'C'], dtype=object)

或者一个 numpy 整数数组:

>>> np.array(q.t.sym.data)
array([0, 1, 2])

您还可以一次性将整个表转换为 numpy 记录数组,但您必须先将其“映射”到内存中:

>>> np.array(q.t.select())
array([('A', 1), ('B', 2), ('C', 3)], dtype=[('sym', 'O'), ('a', '<i8')])

关于python - PyQ 中的 Kdb 数据库到 NumPy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49038899/

相关文章:

python - 在我的自定义表情符号键盘(Django Web 应用程序)中显示表情符号的随机子集

python - 如何在 python 中找到函数对象的必需参数?

python - 使用 Pandas 将具有多行的数据框转换为一行?

python - 如何使用 ffmpeg-python 将视频剪切到一定长度并添加介绍视频?

Python/rq - 监控工作人员状态

python - 如何连接 "Jagged"张量

Python,使用 argsort 的关系问题

Python numpy 数组运算

python - Pandas 数据帧 : mean of column B values within column A windows

python-3.x - Python 数据框 : converting columns into rows