在 KDB 中,是否有相当于 numpy 的 array.shape?

In KDB, is there an equivalent of numpy's array.shape?

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

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

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

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

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

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

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);}