J中的每个先行副词

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

在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
   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