【问题标题】:Julia's Negative/Complement Indexing like RJulia 的负/补索引,如 R
【发布时间】:2018-09-18 02:29:37
【问题描述】:

Julia 中是否有类似于 R 的负索引的功能?在 R 中,代码类似于:

x = 1:10
inds = c(1, 5, 7)
x[-inds]

[1]  2  3  4  6  8  9 10

我发现这在许多情况下都非常有用,尤其是对于诸如采样索引以创建测试/训练集,以及对数组进行子索引以排除某些行之类的事情。所以我希望 Julia 中有一些简单的东西可以做同样的事情。

【问题讨论】:

  • x[setdiff(1:10, inds)] 有效。不知道有没有更简单的,这就是我发表评论的原因。
  • OP,看看下面的包 Bill 链接也是值得的。包维护者是 Julia 社区中的多产开发者,因此它很可能使用高效的方法来实现,并且只适用于许多不同的输入索引类型。
  • Array range complement的可能重复
  • @ColinTBowers 简洁,简单的想法。

标签: arrays indexing julia


【解决方案1】:

这类似于@Colin T Bower 的答案,并且也仅使用基本 Julia。恐怕它不如您的 R 示例那么优雅。

julia> minus(indx, x) = setdiff(1:length(x), indx)
minus (generic function with 1 method)

julia> x = collect(1:10)
10-element Array{Int64,1}:
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10

julia> inds = [1, 5, 7]
3-element Array{Int64,1}:
 1
 5
 7

julia> x[minus(inds, x)]
7-element Array{Int64,1}:
  2
  3
  4
  6
  8
  9
 10

【讨论】:

    【解决方案2】:

    不是基础语言的功能,但请参见此处的包:https://github.com/mbauman/InvertedIndices.jl

    【讨论】:

    猜你喜欢
    • 2021-11-05
    • 2021-03-05
    • 2021-07-13
    • 2011-11-12
    • 1970-01-01
    • 2019-09-23
    • 2015-04-18
    • 1970-01-01
    • 2020-11-12
    相关资源
    最近更新 更多