

以下の2つの配列から新しい配列を作成する。

[code]

    common_y = [1, 2]
    new_y = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
    
[/code]

意外と上手くいかず良いアイデアがありましたらご教授願いたく質問させていただきたいです。

**条件**  
新しい配列を作る際に、common_yの要素に該当するnew_yの配列番号の要素を除きながら、new_yをコピーしていくことが目的です。common_yの配列が変化しても対応できるようになるべく一般化して書いています。  
今自分が考えているのは、if条件で、合わないものを配列にしまわないという単純なことですが、それぞれの配列の長さが違うので変数を変える必要がありますが、変数がある値のときに必要ない結果まで出力してしまい悩んでいる状況です。

[code]

    new_new_y = Int64[]
    for i in minimum(new_y):maximum(new_y)
        for j in 1:length(common_y)
            if i == new_y[common_y[j]]
                continue
            else
                push!(new_new_y,i)
            end
        end
    end
    new_new_y
    
[/code]

もう一つは、splice!を使って書こうと思ったのですが、for
文で回してしまうと、配列の長さが回すごとに代わってしまい結果が得られないという状況になってしまいます。

[code]

    for i in 1:length(common_y)
            splice!(new_y,common_y[i])
    end
    
[/code]

シンプルですが、なかなか難しくて苦戦しています。  
アドバイスありましたら、教えて下さい。  
よろしくお願いいたします


CC BY-SA 4.0
2020-02-29T06:47:23.160
63454
2022-08-02T13:11:02.313
2020-02-29T12:06:11.140
29111
29111
question
array julia
条件付き配列の割り振りに関するアイデア


`InvertedIndices`パッケージを使えば，あまりコードを書かずに実現できますね。

[code]

    using InvertedIndices
    
    common_y = [1, 2]
    new_y = [11, 12, 13, 14, 15, 16, 17, 18,
             19, 20, 21, 22, 23, 24, 25, 26, 27]
    
    new_new_y = new_y[Not(common_y)]
    
[/code]


CC BY-SA 4.0
2022-08-02T13:11:02.313
90342
2022-08-02T13:11:02.313
53818
63454
answer