Préparez deux listes (A, B). Voici $ B \ sous-ensemble A $. Je veux récupérer l'index de A correspondant au sous-ensemble B.
En d'autres termes
A = [1\Liste des entiers dans sim 100]\\
B = [1\Même liste de sim 100]\\
\Longrightarrow index = [1, 3, 5, 7..., 99]
Obtenez un index comme celui-ci.
A = list(range(1, 101))
B = list(range(2, 102, 2))
Numpy a une fonction qui renvoie True pour l'élément de A qui correspond au sous-ensemble B.
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
Il y avait aussi une fonction dans Numpy qui renvoyait l'index de l'élément True.
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...
J'ai pu le mettre en œuvre.
Préparez A à partir d'un nombre aléatoire et B obtenu au hasard.
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])
J'ai pu l'obtenir au hasard.
J'ai pu obtenir l'index, mais il a été trié. En d'autres termes, l'indice considérant l'ordre de B ne peut pas être obtenu car le premier élément de B est l'élément numérique de A. Vous pouvez vérifier chacun d'eux avec l'instruction for, mais dans le cas de grandes longueurs A et B, la quantité de calcul devient très importante. Vous devrez donc penser à une autre manière.
Recommended Posts