Pythonでコードを書いていますが、いくつか問題があります。2つの配列、たとえばAとBがあり、どちらにもIDが含まれています。AにはすべてのIDがあり、Bにはグループに属するIDがあります。私がやろうとしているのは、コードを使用してAのBの要素の位置を取得することです。
>>> print B
[11600813 11600877 11600941 ..., 13432165 13432229 13434277]
>>> mask=np.nonzero(np.in1d(A, B))
>>> print A[mask]
[12966245 12993389 12665837 ..., 13091877 12965029 13091813]
しかし、私はBの値を回復していないので、これは明らかに間違っています。numpy.in1d()正しく使用しているかどうかを確認して、次のことを試しました。
>>> mask=np.nonzero(np.in1d(A, B[0]))
>>> print A[mask]
[11600813]
正しいので、の「B」に問題があると思いnumpy.in1d()ます。ブール値np.in1d(A, B)をインデックスに変換する代わりに直接使用しようとしましたが、機能しませんでした。B = numpy.array(B)、も使ってみB = list(B)ましたが、どれもうまくいきませんでした。
しかし、私がそうする場合でもB = numpy.array(B)[0]、B = list(B)[0]それはその要素に対して機能します。len(A)残念ながら、は16777216であり、 9166であるため、各要素に対して「for」サイクルを実行できませんlen(B)。これには多くの時間がかかります。
また、Bのすべての要素がAにあることを確認しました。
>>> np.intersect1d(A, B)
[11600813 11600877 11600941 ..., 13432165 13432229 13434277]