Я пытаюсь найти «лучшие хиты» в матрице сходства (то есть матрица MXN, где индекс вдоль каждой оси соответствует позиции ITH в векторе M и JTH Position в векторе N). Самый простой способ объяснить это - найти индексы самых высоких значений в матрице итеративно, исключая ранее выбранные ряды и столбцы. Это приводит к выбранным индексам MIN (M, N).import numpy as np
import pandas as pd
def pairwise_best_hit(sim):
xdim,ydim = np.meshgrid(np.arange(sim.shape[1]),np.arange(sim.shape[0]))
table = np.vstack((sim.ravel(),xdim.ravel(),ydim.ravel())).T
df = pd.DataFrame(table).rename(columns={0:'sim',1:'index2',2:'index1'}).sort_values('sim',ascending=False)
seq1_hits = []
seq2_hits = []
while len(df):
index1 = df.iloc[0]['index1']
index2 = df.iloc[0]['index2']
seq1_hits.append(index1)
seq2_hits.append(index2)
df = df[(df['index1']!=index1)&(df['index2']!=index2)]
return [seq1_hits,seq2_hits]
< /code>
и для матрицы < /p>
sim = np.array([[1,5,6,2],[7,10,3,4],[1,5,3,7]])
pairwise_best_hit(sim)
< /code>
возвращает < /p>
[[1, 2, 0], [1, 3, 2]]
Подробнее здесь: https://stackoverflow.com/questions/795 ... nd-exclusi
Самый быстрый способ найти показатели наивысшего значения в матрице итеративно и исключительно ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение