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]