KDB+/Q:填充不规则列表列表(矩阵)的有效方法
KDB+/Q: Efficient way of padding an irregular list of lists (matrix)
给定以下列表:
q)m
1 1
1 1
1 1 1
生成正则矩阵(用0填充空格)的有效方法是什么,如下所示:
q)m
1 1 0
1 1 0
1 1 1
谢谢
一种方法如下:
q)m:(1 1;1 1;1 1 1)
q){x,'(max[c]-c:count each x)#'0}m
1 1 0
1 1 0
1 1 1
只需找到最长行与其他行之间的长度差,并附加该数量的零。
下面的迭代条件语句也应该有效,其中 0 附加到每行的末尾,直到它达到最长行的长度。
q)m:(1 1;1 1;1 1 1)
q){{x,0}/[{(max count each m)>(count x)};x]}'[m]
1 1 0
1 1 0
1 1 1
给定以下列表:
q)m
1 1
1 1
1 1 1
生成正则矩阵(用0填充空格)的有效方法是什么,如下所示:
q)m
1 1 0
1 1 0
1 1 1
谢谢
一种方法如下:
q)m:(1 1;1 1;1 1 1)
q){x,'(max[c]-c:count each x)#'0}m
1 1 0
1 1 0
1 1 1
只需找到最长行与其他行之间的长度差,并附加该数量的零。
下面的迭代条件语句也应该有效,其中 0 附加到每行的末尾,直到它达到最长行的长度。
q)m:(1 1;1 1;1 1 1)
q){{x,0}/[{(max count each m)>(count x)};x]}'[m]
1 1 0
1 1 0
1 1 1