KDB 索引矩阵
KDB indexing a matrix
我有两个矩阵:
a: (0.5 0.5; 0.3 0.7)
idx: ((0 0);(0 1);(1 1))
我想使用 idx 作为 i
和 j
对来从 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"
我有两个矩阵:
a: (0.5 0.5; 0.3 0.7)
idx: ((0 0);(0 1);(1 1))
我想使用 idx 作为 i
和 j
对来从 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"