У меня есть массив numpy и соответствующие значения поиска. Из каждого столбца данных я должен получить максимальную позицию соответствующего поиска и преобразовать эту позицию в результат данных.
Я должен сделать, как показано на рисунке.
Изображение говорит лучше, чем мой язык.
import numpy as np
data = np.array([[0, 2, 1, 4, 3, 2, 4, 4, 1],
[1, 1, 2, 0, 3, 4, 4, 2, 1],
[2, 2, 1, 4, 4, 1, 4, 4, 4]] )
print (data)
print ()
lookup = np.array([[60, 90, 90, 60, 50],
[90, 90, 80, 90, 90],
[60, 40, 90, 60, 50]])
print (lookup)
print ()
Я сделал следующее:
data = data.transpose(1,0)
lookup = lookup.transpose(1,0)
results = []
for d in data:
matches = lookup[d].diagonal()
print (matches)
idx = np.argmax(matches, axis=0)
res = d[idx]
results.append(res)
print ()
print (results)
Это сработало. Но есть ли лучший способ сделать это?