KDB 索引矩阵

KDB indexing a matrix

我有两个矩阵:

a: (0.5 0.5; 0.3 0.7)
idx: ((0 0);(0 1);(1 1))

我想使用 idx 作为 ij 对来从 a 中获取值。在长格式中,这将是:

a[0;0]
a[0;1]
a[1;1]

目前,当我尝试将其索引为 a idx 时,它的行为就好像我输入了 a[0 0]

我做错了什么?

您想在此处对每个权利 /: 使用 . 索引:

a ./:idx

Apply Each Right (@kylebonnes) 是 OP 的正确答案。如果它更适合您将 a 表示为向量,您可能更喜欢分散索引的替代方法。

q)M:2 2#V:5 5 3 7%10  / matrix; vector
q)r:0 0 1;c:0 1 1     / rows; columns

q)M ./:r,'c
0.5 0.5 0.7

q)V 0 2 sv(r;c)       / index V as if it were M
0.5 0.5 0.7

这里左边的参数sv指定了一个(可变的)算术基数。对于 r 行和 c 列,您可以使用 (0,N)sv(r;c) 作为索引到一个被夷为平地的 N-column 矩阵。

q)show A:4 5#B:"the  quickbrownfox  "
"the  "
"quick"
"brown"
"fox  "
q)rc:6 2#2 0 2 1 1 1 2 4 1 3 0 1
q)A ./: rc
"brunch"
q)B 0 5 sv flip rc
"brunch"