Ho due array 1D, x & y, uno più piccolo dell'altro. Sto cercando di trovare l'indice di ogni elemento di y in x.Numpy: per ogni elemento in un array, trovare l'indice in un altro array
Ho trovato due modi ingenui per fare ciò, il primo è lento e il secondo a uso intensivo di memoria.
Il modo lento
indices= []
for iy in y:
indices += np.where(x==iy)[0][0]
L'ingordo di memoria
xe = np.outer([1,]*len(x), y)
ye = np.outer(x, [1,]*len(y))
junk, indices = np.where(np.equal(xe, ye))
C'è un modo più veloce o approccio intensivo meno memoria? Idealmente la ricerca trarrebbe vantaggio dal fatto che non stiamo cercando una sola cosa in una lista, ma molte cose, e quindi è leggermente più adatta alla parallelizzazione. Punti bonus se non si assume che ogni elemento di y sia effettivamente in x.
Ah, un grande pezzo di codice. Grazie per aver generalizzato il codice di Joe! – Chris