J中的每个副词

问题描述 投票:2回答:1

在Q / kdb中,您可以使用表示每个优先级的':轻松修改动词。它将动词应用于元素及其先前的邻居。例如

=':检查值对是否相等。在J中,您可以轻松折叠/\但它是累积的,是否有成对的形式?

j
1个回答
3
投票

[\具有dyadic valence以选择特定长度的列表,其行为取决于正负长度:

   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

还有cut的'subarrays'用法:

   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
© www.soinside.com 2019 - 2024. All rights reserved.