APL从Array中删除元素

3 apl

我是APL的新手.如何从阵列中删除不需要的元素?

例如:

 X?1 2 3 4 5 6 7 8 9
Run Code Online (Sandbox Code Playgroud)

现在我想删除等于4或6的X元素.我试过了

X?4?X
Run Code Online (Sandbox Code Playgroud)

从X中删除4,但它没有用.提前致谢.

Pau*_*our 9

执行此操作的适当方法是使用without函数(dyadic tilda):

      x?1 2 3 4 5 6 7 8 9
      x~4 6
1 2 3 5 7 8 9
Run Code Online (Sandbox Code Playgroud)

但是,如果您需要为了其他目的而删除要删除的项目的位置(可能是从某些其他相关数组中删除相应的项目),那么上面的MrZander技术是合适的.


MrZ*_*der 6

试试这个,假设 x = 1 2 3 4 5 6 7 8 9

x?(~x?4 6)/x
Run Code Online (Sandbox Code Playgroud)

说明

阵列中找到4和6xx?4 6 其输出:0 0 0 1 0 1 0 0 0(4和6的位置)

现在,用~which 输出否定这个数组1 1 1 0 1 0 1 1 1(与上面相反)

将此应用到数组 x 中,/x从而为您留下1 2 3 5 7 8 9

最后,将其分配给 xx?并将 x 保留为您想要的输出。