Ich habe ein zweidimensionales, numpiges Datenfeld, das symmetrische Informationen über Paare von Elementen enthält, die ich aufspüre, sehr ähnlich wie eine Round-Robin-Klammer in einem Turnier. Gemäß dieser Analogie belegt jeder Spieler eine Reihe mit den Kolumnen, die seine Punkte gegen einen gegebenen Gegner sind. Aus "Legacy" -Gründen werden alle Punktzahlen positive Zahlen sein, mit Ausnahme der Punktzahl gegen sich selbst.Numpy-Minimum für eine gegebene Spalte
Sagen wir, ich möchte die schlechteste Punktzahl eines bestimmten Spielers finden und sowohl die Punktzahl als auch den Gegner zurückgeben spielte für dieses Ergebnis. Wie könnte ich das tun?
könnte die mäßige Version wie folgt aussehen:
minimum = float('inf')
min_opp = None
for opponent_id in player_ids:
if opponent_id != player_id:
score = match_matrix[player_id, opponent_id]
if score < minimum:
minimum = score
min_opp = opponent_id
return minimum, min_opp
Aber das die Macht der numpy ist nicht zu verwenden. Ich denke, es sollte eine einfache Lösung geben, aber ich kann es nicht finden.
score = np.min(match_matrix[player, :])
gibt das Selbst-Score, und ich kann nicht ganz den Code aus this answer Arbeit richtig machen.
Dank!
EDIT: This answer bietet gute Ideen, sondern erhält nur das Minimum des gesamten Arrays, nicht eine einzige Zeile.
Beantwortet [this] (http://stackoverflow.com/a/29394823/6614295) Ihre Frage? – jotasi
Mögliches Duplikat von [Minimum von Numpy Array Ignoring Diagonal] (http://stackoverflow.com/questions/29394377/minimum-of-numpy-array-ignoring-diagonal) – jotasi
@jotasi. Das beantwortet die Frage nach einer ganzen Matrix, nicht nach einem reihenweisen Fall. Ich würde es nicht für einen Betrogenen halten. –