跳过数组的每第 n 个元素

Toi*_*wén 2 arrays julia

如何从 julia 数组中删除每个第 n 个元素?假设我有以下数组:a = [1 2 3 4 5 6]并且我想要b = [1 2 4 5]

在 javascript 中我会做类似的事情:

b = a.filter(e => e % 3);
Run Code Online (Sandbox Code Playgroud)

在 Julia 中如何做到这一点?

Sil*_*olo 5

您的问题标题和正文提出了不同的问题。标题询问如何跳过第 N 个元素,而 Javascript 代码片段详细介绍了如何根据元素的(而不是索引)跳过元素。

按值跳过

我们可以使用 来做到这一点filter

filter((x) -> x % 3 != 0, a)
Run Code Online (Sandbox Code Playgroud)

这基本上相当于你的 Javascript 代码。顺便说一句,我们也可以使用广播

a[a .% 3 .!= 0]
Run Code Online (Sandbox Code Playgroud)

这更类似于您在 MATLAB 和 R 等面向数组的语言中看到的代码。

按索引跳过

通过额外的enumerate调用,我们可以获得要操作的索引。

map((x) -> x[2], Iterators.filter(((x) -> x[1] % 3 != 0), enumerate(a)))
Run Code Online (Sandbox Code Playgroud)

这大致就是您在 Python 中要做的事情。enumerate获取索引,filter清除,然后map消除现在不需要的索引。

或者我们可以再次使用广播。

a[(1:length(a)) .% 3 .!= 0]
Run Code Online (Sandbox Code Playgroud)