Hallo Ich versuche, ein Array von Zahlen zu ihren Reihen zuordnen. So würde zum Beispiel [2,5,3] [0,2,1] werden.Karte Array von Zahlen effizient in Python Rang
Ich benutze derzeit np.where, um den Rang in einem Array nachzuschlagen, aber das erweist sich als sehr lange Zeit, da ich dies für ein sehr großes Array (über 2 Millionen Datenpunkte) tun muss.
Wenn jemand irgendwelche Vorschläge hat, wie ich das erreichen könnte, würde ich es sehr schätzen!
[EDIT] Dies ist, was der Code eine bestimmte Zeile zur Zeit aussieht zu ändern:
def change_nodes(row):
a = row
new_a = node_map[node_map[:,1] == a][0][0]
return new_a
[EDIT 2] duplizierte Nummern zusätzlich den gleichen Rang
[EDIT 3] Zusätzlich haben sollte, eindeutige Zahlen sollten nur einmal auf das Ranking zählen. Zum Beispiel wäre das Ranking für diese Liste [2,3,3,4,5,7,7,7,7,8,1]:
{1: 0, 2: 1, 3 : 2, 4: 3, 5: 4, 7: 5, 8: 6}
Haben Sie 'list.sort()' und 'list.index()' 'gesehen? – StardustGogeta
danke, np.argsort war genau das, was ich brauchte! – chris
Entschuldigung, ich wollte auch hinzufügen, dass, wenn eine Nummer in der Liste wiederholt wird, sie jedes Mal denselben Rang haben muss. – chris