考虑矩阵:
1 2 3
4 5 6
7 8 9
我想取中间列,将其分配给变量,并用它替换中间行,给我
1 2 3
2 5 8
7 8 9
我正在使用
提取中间列a:m[;enlist1]
返回
2
5
8
如何用?替换中间行?需要翻转吗?
感谢。
答案 0 :(得分:3)
如果您想更新矩阵,可以使用
q)show m:(3;3)#1+til 10
1 2 3
4 5 6
7 8 9
q)a:m[;1]
q)m[1]:a
q)show m
1 2 3
2 5 8
7 8 9
q)
切断" a"你所需要的只是:
m[1]:m[;1]
答案 1 :(得分:1)
您可以使用点修改 -
q)show m:(3;3)#1+til 10
1 2 3
4 5 6
7 8 9
q)show a:m[;1]
2 5 8
q).[m;(1;::);:;a]
1 2 3
2 5 8
7 8 9
可在此处查看文档:
答案 2 :(得分:0)
在可以定义操作,行和列的位置稍微更通用
q)m:3 cut 1+til 9
1 2 3
4 5 6
7 8 9
将中间栏分配到中间行:
q){[ m;o;i1;i2] .[m;enlist i1;o; flip[m] i2 ] }[m;:;1;1]
1 2 3
2 5 8
7 8 9
将o
作为+
q){[ m;o;i1;i2] .[m;enlist i1;o; flip[m] i2 ] }[m;+;1;1]
1 2 3
6 10 14
7 8 9