對於二維索引隨機數組中的每個元素(可能有重複數據),我希望對二維零數組中的對應網格「+ = 1」。但是,我不知道如何優化計算。使用標準的for循環,如下圖所示,在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
運行時可以說是相當顯著:
>> timeit(interadd, number=5000)
43.69953393936157
有沒有辦法向量化這個反覆的過程?
打字幾乎thing.You可以改變'IDX相同。 T.tolist()'到'(idx [:,0],idx [:,1])'應該更快。 – YXD
(錯字剛剛在上面的註釋中更正) – YXD