首页 > 解决方案 > 在 KDB 中,是否有 numpy 的 array.shape 等价物?

问题描述

我正在尝试使用 KDB 中的矩阵,并且经常需要查询它们的维度。

目前我正在做countand count flip,但这是冗长且重复的。有没有更优雅的方法来查询n-D矩阵的维度?

标签: kdb

解决方案


假设我们在一个格式良好的矩阵前面,可以实现您的目标的函数是:

shape:{:(count x;count x[0]);};

如果你经常使用它,你可以将它保存在目录中的启动文件q.qq,这样它就会在启动时加载并随时可用。

显然,翻转整个矩阵在时间上更昂贵:

t:(100;100)#til 10000
q)\t:1000000 {:(count x; count flip x);}[t]
33808
q)\t:1000000 {:(count x;count x[0]);}[t]
282

话虽如此,该flip方法将保证矩阵格式良好,不会被所提出的方法捕​​获:

q)t2:((2;3;4);(2;3)) 
q){:((#)x;(#)x[0]);}[t2]
2 3
q){:(count x; count flip x);}[t2]
'length
[1]  {:(count x; count flip x);}

推荐阅读