J中的每个先行副词
在Q/kdb中,您可以使用表示每个优先顺序的J中的每个先行副词,j,J,在Q/kdb中,您可以使用表示每个优先顺序的:轻松修改动词。它将动词应用于元素及其前一个邻居。比如说 =”:检查值对是否相等。在J中,您可以轻松地折叠/\,但它是累积的,是否有一个成对的版本?\有一个选择特定长度列表的选项,根据正长度和负长度有不同的行为: 2]\i.4 0 1 1 2 2 3 3]\i.4 0 1 2 1 2 3 _2]\i.4 0 1 2 3 _3]\i.4 0 1 2 3 0 0 因此,要进行配对比较: n=:1 2 2 2 3 3 1
:
轻松修改动词。它将动词应用于元素及其前一个邻居。比如说
=”:
检查值对是否相等。在J中,您可以轻松地折叠/\
,但它是累积的,是否有一个成对的版本?\
有一个选择特定长度列表的选项,根据正长度和负长度有不同的行为:
2]\i.4
0 1
1 2
2 3
3]\i.4
0 1 2
1 2 3
_2]\i.4
0 1
2 3
_3]\i.4
0 1 2
3 0 0
因此,要进行配对比较:
n=:1 2 2 2 3 3 1
2]\n
1 2
2 2
2 2
2 3
3 3
3 1
=/"(1) 2]\n
0 1 1 0 1 0
_2]\n
1 2
2 2
3 3
1 0
=/"(1) _2]\n
0 1 1 0
注意最后一对,您还可以旋转列表:
n ,: n
1 2 2 2 3 3 1
1 2 2 2 3 3 1
(] ,: 1&|.) n
1 2 2 2 3 3 1
2 2 2 3 3 1 1
=/(] ,: 1&|.) n
0 1 1 0 1 0 1
如果您特别希望通过前一个邻居获取每个项目:
2|.\1 2 3 4
2 1
3 2
4 3
还有切割的“子阵列”用法:
2 <;.3 n
┌───┬───┬───┬───┬───┬───┬─┐
│1 2│2 2│2 2│2 3│3 3│3 1│1│
└───┴───┴───┴───┴───┴───┴─┘
2 <;._3 n
┌───┬───┬───┬───┬───┬───┐
│1 2│2 2│2 2│2 3│3 3│3 1│
└───┴───┴───┴───┴───┴───┘
2 =/;._3 n
0 1 1 0 1 0
在J中重复使用类似的并矢用法\
:
<\10 15 20
┌──┬─────┬────────┐
│10│10 15│10 15 20│
└──┴─────┴────────┘
2 <\10 15 20
┌─────┬─────┐
│10 15│15 20│
└─────┴─────┘
2 <\0 , 10 15 20
┌────┬─────┬─────┐
│0 10│10 15│15 20│
└────┴─────┴─────┘
2 -~/\0 , 10 15 20
10 5 5
deltas =: 2 -~/\ 0&,
deltas 10 15 20
10 5 5
非常感谢!这太彻底了。跟进问题。你能简单地帮我理解一下比较等式时的“(1)
表达式吗?@andrewnc这就是,我在/
上用它来获得行而不是列的效果。paren只是为了避免它看起来像后面数字的一部分。blah“1]2
是另一种方法。
<\10 15 20
┌──┬─────┬────────┐
│10│10 15│10 15 20│
└──┴─────┴────────┘
2 <\10 15 20
┌─────┬─────┐
│10 15│15 20│
└─────┴─────┘
2 <\0 , 10 15 20
┌────┬─────┬─────┐
│0 10│10 15│15 20│
└────┴─────┴─────┘
2 -~/\0 , 10 15 20
10 5 5
deltas =: 2 -~/\ 0&,
deltas 10 15 20
10 5 5