быстрый способ найти индекс ближайшего из массива к каждому элементу в другом массиве - PullRequest
0 голосов
/ 07 апреля 2020

Я хочу найти более быстрый способ получения индекса ближайшего элемента в массиве формы (k,l) для каждого элемента в другом массиве формы (n,l), я нашел 2 решения, но я думаю, что производительность можно улучшить.

вот пример

import numpy as np
import numpy.matlib as ml

frames = np.random.random([1000,2])
codeBook = np.random.random([8,2])

I

dist = np.zeros([frames .shape[0],codeBook.shape[0]])
for i in range(8):
    difference = frames - ml.repmat(codeBook[i,:],frames.shape[0],1)
    dist[:,i] = np.sqrt(np.sum(difference**2,1)) 
idx = np.argmin(dist,axis=1)

II

diffToCB =  frames - np.rot90(ml.repmat(codeBook,frames.shape[0],1).reshape(-1,8,2),axes=(1,0))
idx = np.argmin(np.sqrt(np.einsum('ijk,ijk->ij', diffToCB, diffToCB)) , axis=0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...