gpt4 book ai didi

KDB '@' 运算符(operator)

转载 作者:行者123 更新时间:2023-12-04 19:57:12 28 4
gpt4 key购买 nike

@ operator返回第一级由其参数索引的元素。

你如何用英语解释引用示例中的最后一行:

q)d:((1 2 3;4 5 6 7);(8 9;10;11 12);(13 14;15 16 17 18;19 20))
q)d@1
(8 9;10;11 12)
q)d@1 2 / selects 2 items at the top level
((8 9;10;11 12);(13 14;15 16 17 18;19 20))

q)@[d;1 1 1;+;3]
((1 2 3;4 5 6 7);(17 18;19;20 21);(13 14;15 16 17 18;19 20))

我不理解上次 @ 用法返回的任何值。

最佳答案

对于数据结构 d,取索引为 1 1 1 的那些项并加 3。由于您引用同一索引 3 次,意味着加 9。将其分解为以下步骤:

q)d
(1 2 3;4 5 6 7)
(8 9;10;11 12)
(13 14;15 16 17 18;19 20)

/ use indexing to check which elements we are referring to
q)@[d;1]
8 9
10
11 12

/ adding 3 to a single index
q)@[d;1;+;3]
(1 2 3;4 5 6 7)
(11 12;13;14 15)
(13 14;15 16 17 18;19 20)

/ refer to same index multiple times
q)@[d;1 1 1;+;3]
(1 2 3;4 5 6 7)
(17 18;19;20 21)
(13 14;15 16 17 18;19 20)

引用同一个索引加9是因为kdb的内存管理:http://www.timestored.com/kdb-guides/memory-management#reference_counting在每种情况下都引用了相同的底层向量,这可能有点出乎意料。

关于KDB '@' 运算符(operator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15810691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com