numpyで2つの配列をシーケンシャルに比較したい
ある配列 a のサブセットの配列を b としたときに、 b の各要素が a の何番目にあるか、を調べたいです。
具体的には以、下のコードを numpy を使って高速に実現したいのですが、やり方がわかりません。
何卒ご教示お願いいたします。
a = [1,4,5,2,3,6]
b = [1,4,3]
I = [-1] * len(b)
last = 0
for i,n in enumerate(b):
I[i] = a.index(n, last)
last = I[i] + 1
print(I)
2018/06/20
言葉足らずでしたので補足させていただきます。
任意の i について b[i] == a[j] を満たす j が必ず存在します。
また、a と b の関係は、順番も保存されます。
つまり b[i] == a[j] and b[i+1] == a[k] のとき、常に j<k です。
何卒よろしくお願いします。
2018/06/23
言葉足らずでしたので補足させていただきます。
bの各要素が、「aの中での順番」通りにならんでいることは保証されますが、a自体はソートされているわけではありません。
合わせてサンプルコードを修正しました。
度々申し訳ありません。