Bereiten Sie zwei Listen vor (A, B). Hier ist $ B \ Teilmenge A $. Ich möchte den Index von A abrufen, der der Teilmenge B entspricht.
Mit anderen Worten
A = [1\Liste der ganzen Zahlen in sim 100]\\
B = [1\Gerade Liste von Sim 100]\\
\Longrightarrow index = [1, 3, 5, 7..., 99]
Holen Sie sich einen Index wie diesen.
A = list(range(1, 101))
B = list(range(2, 102, 2))
Numpy hat eine Funktion, die True für das Element von A zurückgibt, das der Teilmenge B entspricht.
import numpy as np
isin = np.isin(A, B)
print(isin)
#array([False, True, False, True, False, True, False, True, False...
print(len(isin) == len(A))
#True
Es gab auch eine Funktion in Numpy, die den Index des True-Elements zurückgab.
index = list(np.where(isin))[0]
print(index)
#array([ 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33...
Ich konnte es umsetzen.
Bereiten Sie A mit einer Zufallszahl und B zufällig vor.
A = random.sample(range(1, 100), k=5)
B = random.sample(A, 3)
print(A)
#[37, 24, 76, 55, 52]
print(B)
#[55, 76, 37]
index = list(np.where(np.isin(A, B)))[0]
print(index)
#array([0, 2, 3])
Ich konnte es zufällig bekommen.
Ich konnte den Index abrufen, aber er wurde sortiert. Mit anderen Worten, der Index unter Berücksichtigung der Reihenfolge von B kann nicht erhalten werden, da das erste Element von B das Zahlenelement von A ist. Sie können jede mit der for-Anweisung überprüfen, aber bei großen Längen A und B wird der Rechenaufwand sehr groß. Sie müssen sich also einen anderen Weg überlegen.