Schnellster Weg, um Indizes mit höchstem Wert in einer Matrix iterativ und ausschließend zu findenPython

Python-Programme
Anonymous
 Schnellster Weg, um Indizes mit höchstem Wert in einer Matrix iterativ und ausschließend zu finden

Post by Anonymous »

Ich versuche, die "besten Hits" in einer Ähnlichkeitsmatrix zu finden (d. H. Eine MXN -Matrix, wobei der Index entlang jeder Achse der ITH -Position in Vektor M und der JTH -Position in Vektor n entspricht). Der einfachste Weg, dies zu erklären, besteht darin, die Indizes der höchsten Werte in einer Matrix iterativ zu finden, ohne zuvor ausgewählte Zeilen und Spalten. Dies führt zu min (m, n) ausgewählten Indizes.

Code: Select all

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>
und für eine Matrix < /p>
sim = np.array([[1,5,6,2],[7,10,3,4],[1,5,3,7]])
pairwise_best_hit(sim)
< /code>
Gibt < /p>
zurück[[1, 2, 0], [1, 3, 2]]

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post