我使用的是JupyterQ,在Q中有两个表:
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中的类?
职能如下:
print .p.import[`numpy;`:array][tbl1]给我:
{'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中的数据?
感谢并致以问候
西蒙
发布于 2020-07-06 10:05:39
编辑:这应该是embedPy而不是embedQ -我的错误!!
我从KX的康纳那里得到了这个答案。
选择是使用Set将数据导入python,或者使用Get将python类导入到q。
真的很酷。
西蒙
嗨西蒙
分配从API的Python端定义的函数可以访问的Q对象需要设置对象。在这种情况下,您将描述您想要运行的位置
p)print(tbl1)
您需要按照以下步骤运行该程序:
// 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所示
.p.set[`tbl1;tbl1]
.p.set[`tbl2;tbl2]
p)teCalc.addObservations(tbl1, tbl2)或者“获取”python可调用对象并将其赋值给q可调用函数,并直接在没有设置的q数据上运行。
// 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/
万事如意,
康纳
https://stackoverflow.com/questions/62729262
复制相似问题