在KDB中如何将一维列表转换为指定阶数的正方形矩阵?
KDB生成n阶方阵的规范实现
KDB内置的#重塑运算符是处理这类需求的原生方案,不需要额外封装自定义函数,是行业通用的规范实现方式。
基础用法说明
当#运算符左侧为维度列表时,会将右侧的一维列表按指定维度重塑为矩阵:
/ 你的示例实现 q)l:1 2 3 4 q)2 2#l 1 2 3 4
如果要生成通用n阶方阵,只需将左侧维度参数改为(n;n)即可,示例如下:
/ 生成3阶数值方阵示例 q)n:3 q)list:1+til n*n / 生成长度为n²的1~9有序列表 q)(n;n)#list 1 2 3 4 5 6 7 8 9
额外特性说明
如果输入的一维列表长度不足n²,KDB会自动循环填充元素:
q)2 2#1 2 1 2 1 2
如果输入的一维列表长度超过n²,会自动截断前n²个元素使用。
内容的提问来源于stack exchange,提问作者cjm2671
相关产品推荐
相关产品推荐

