首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KDB embedPy在Python中使用来自q的数组

KDB embedPy在Python中使用来自q的数组
EN

Stack Overflow用户
提问于 2020-07-04 12:41:45
回答 1查看 346关注 0票数 0

我使用的是JupyterQ,在Q中有两个表:

代码语言:javascript
复制
tbl1: ([]month:(1997.01;1997.01;1997.01);
    ric:(3#`GTGS.SI);
    date:(1997.01.06T01:19:21.160;1997.01.06T01:53:57.230;1997.01.06T07:24:19.240);
    price:(0.71;0.72;0.73));

tbl2: ([]month:(1997.01;1997.01;1997.01);
    ric:(3#`NSWF.SI);
    date:(1997.01.06T01:19:21.160;1997.01.06T01:53:57.230;1997.01.06T07:24:19.240);
    price:(0.45;0.46;0.47));

我在python中定义了一个类teCalc

我想向它传递两个数组,如下(在python中):teCalc.addObservations(tbl1, tbl2)

如何将这些Q表传递给python中的类?

职能如下:

代码语言:javascript
复制
print .p.import[`numpy;`:array][tbl1]

给我:

代码语言:javascript
复制
{'month': array([1997.01, 1997.01, 1997.01]), 'ric': ['GTGS.SI', 'GTGS.SI', 'GTGS.SI'], 'date': array([-1089.94489398, -1089.92086539, -1089.69144398]), 'price': array([0.71, 0.72, 0.73])}

因此,我可以看到,可以将q中的表转换为python对象。

但是,我所有将它赋值给python中的变量的尝试都失败了。如果我在python代码行中引用tbl1或tbl2 (例如,p)print(tbl1)),那么tbl1变量名就不会被识别。

请给我建议。如何在JupyterQ中用Python创建类时使用Q中的数据?

感谢并致以问候

西蒙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-06 10:05:39

编辑:这应该是embedPy而不是embedQ -我的错误!!

我从KX的康纳那里得到了这个答案。

选择是使用Set将数据导入python,或者使用Get将python类导入到q。

真的很酷。

西蒙

嗨西蒙

分配从API的Python端定义的函数可以访问的Q对象需要设置对象。在这种情况下,您将描述您想要运行的位置

p)print(tbl1)

您需要按照以下步骤运行该程序:

代码语言:javascript
复制
// Define the q table
mytab:([]5?1f;5?1f)
// set the q table converted to a python dictionary to python variable tbl1
.p.set[`tbl1;mytab]
// Print from the python side of the interface
p)print(tbl1)

关于使用q对象调用类,您需要从q端执行集合到python,如上面的.i.e所示

代码语言:javascript
复制
.p.set[`tbl1;tbl1]
.p.set[`tbl2;tbl2]
p)teCalc.addObservations(tbl1, tbl2)

或者“获取”python可调用对象并将其赋值给q可调用函数,并直接在没有设置的q数据上运行。

代码语言:javascript
复制
// Load the script containing the required class
\l myclass.p
// Retrieve the class
teCalc:.p.get[`teCalc]
// Access the relevant function
addObservations:teCalc[`:addObservations]
// Run on the relevant q data and return result to q (denoted by trailing `)
addObservations[tbl1;tbl2]` 

应该注意的是,当embedPy将Q表转换为Python时,它会将Q表转换为字典列表(这是Q表的准确表示,但可能与直觉相反),如果您需要将数据作为用例的熊猫数据,则可能需要手动进行转换。这是使用两个函数.ml.tab2df/.ml.df2选项卡完成的,这两个函数都可以在Kx机器学习工具包这里中使用。

有关embedPy的更多信息可在下面的链接中获得,这些链接详细地概述了上述所有内容

https://code.kx.com/q/ml/embedpy/userguide/

https://code.kx.com/q/ml/embedpy/faq/

万事如意,

康纳

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62729262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档