Per ciascun elemento di una serie casuale di indici 2D (con potenziali duplicati), voglio "+ = 1" sulla griglia corrispondente in un array zero 2D. Tuttavia, non so come ottimizzare il calcolo. Utilizzando lo standard per ciclo, come mostrato qui,Vectorize aggiunta iterativa negli array NumPy
def interadd():
U = 100
input = np.random.random(size=(5000,2)) * U
idx = np.floor(input).astype(np.int)
grids = np.zeros((U,U))
for i in range(len(input)):
grids[idx[i,0],idx[i,1]] += 1
return grids
Il runtime può essere abbastanza significativo:
>> timeit(interadd, number=5000)
43.69953393936157
C'è un modo per vectorize questo processo iterativo?
Stava scrivendo quasi la stessa thing.You può cambiare 'IDX. T.tolist() 'a' (idx [:, 0], idx [:, 1]) ', dovrebbe essere ancora più veloce. – YXD
(errore di battitura appena corretto nel commento sopra) – YXD