Форум сайта python.su
надо найти k ближайших векторов
пример
data = np.random.rand(rows,cols) vec= np.random.rand(1,cols) d = ((data-vec)**2).sum(axis=1) # compute distances ndx = d.argsort()
ndx[:k]
d1 = ((data1-vec)**2).sum(axis=1) # compute distances
ndx1 = d1.argsort()
d2 = ((data2-vec)**2).sum(axis=1) # compute distances
ndx2 = d2.argsort()
Отредактировано mrgloom (Окт. 23, 2013 10:51:54)
Офлайн
import numpy as np import time rows = 10000 cols = 1000 batches = 5 k= 10 fp = np.memmap('C:/memmap_test', dtype='float32', mode='w+', shape=(rows*batches,cols)) vec= np.random.rand(1,cols) t0= time.time() d = np.empty((rows*batches,)) for i in range(batches): d[i*rows:(i+1)*rows] = ((fp[i*rows:(i+1)*rows]-vec)**2).sum(axis=1) ndx = d.argsort() print (time.time()-t0) print ndx[:k]
Офлайн