Есть ли в Julia функциональность, аналогичная отрицательной индексации R? В R код был бы похож на:

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

[1]  2  3  4  6  8  9 10

Я обнаружил, что это чрезвычайно полезно во многих ситуациях, особенно для таких вещей, как индексы выборки для создания набора для тестирования / обучения, а также для субиндексации массива для исключения определенных строк. Так что я надеюсь, что в Джулии есть что-то простое, что может сделать то же самое.

4
NoviceStat 18 Сен 2018 в 05:29

2 ответа

Лучший ответ

Это похоже на ответ @Colin T Bower, а также использует только базовую Джулию. Боюсь, что это не так элегантно, как ваш пример 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
Julia Learner 18 Сен 2018 в 04:55

Не является функцией базового языка, но посмотрите, например, пакет здесь: https://github.com/ mbauman / InvertedIndices.jl

3
Bill 18 Сен 2018 в 03:40