Étant donné deux listes:Déterminer la position de chaque élément d'un tableau B dans un autre tableau A
In [518]: A
Out[518]: [3, 4, 2, 1, 7, 6, 5]
In [519]: B
Out[519]: [4, 6]
Chaque élément B
existe dans A
, sans exception.
Je voudrais récupérer un tableau d'index pour B
comme vu dans A. Par exemple, 4 est présent dans l'index 1 dans A, et 6 est dans la position 5 pour B
. Ma sortie attendue est [1, 5]
pour ce scénario.
C'est ce que je l'ai fait pour obtenir l'index:
In [520]: np.flatnonzero(np.in1d(a, b))
Out[520]: array([1, 5])
Malheureusement, cela ne fonctionnera pas dans la plupart des cas. Par exemple, si B = [6, 4]
, ma méthode sort toujours [1, 5]
quand il devrait sortir [5, 1]
.
Existe-t-il un moyen numpy efficace pour obtenir ce que j'essaie d'atteindre?
assez sûr que cela est venu avant? Qu'en est-il des doublons? –
L'aide de 'np.where' donne cet exemple exact:' ix = np.in1d (A.ravel(), B) .reshape (A.shape); np où (ix) '. Désolé, ne correspond pas à votre deuxième critère. –
@JonClements Peut-être, ne pouvait rien trouver ... Quant aux dupes en B, il est certain que toute méthode numpy digne de ce nom devrait être capable de les gérer correctement, mais ça ne me ferait pas de mal non plus. –