如何将列表转换为 KDB 中的矩阵?

How do I convert a list into a matrix in KDB?

我有一个表格列表:

1 2 3 4

我想把它转换成方阵:

1 2
3 4

我认为是:

(1 2;3 4)

对于 KDB 中 n 大小的矩阵,执行此操作的规范方法是什么?

您可以使用take

q)n: 2
q)(n; n) # 1 2 3 4
1 2
3 4

或对于 m x n 矩阵:

q)m: 2
q)n: 3
q)(m; n) # 1 2 3 4 5 6
1 2 3
4 5 6

你可以这样做:

n cut list

例如

q)3 cut til prd 3 3
0 1 2
3 4 5
6 7 8

编辑: 要将任何列表插入最近的 n*n 矩阵并用 NA 填充后续位置,您可以这样做:

q)f:{a:(ceiling sqrt b:count x); a cut x,((a*a) - b)#0N}
q)/e.g.
q)f til 10
0 1 2 3
4 5 6 7
8 9

q)