Ich muss ein mehrdimensionales Array nach den Werten im ersten Sub-Array so schnell wie möglich sortieren (die Zeile wird millionenfach angewendet).Mehrdimensionales Array schneller Sortierung
Unten ist meine ursprüngliche Linie, und mein Versuch, seine Leistung zu verbessern, die nicht funktioniert. Soweit ich das sehen kann, sortiert mein numpy
Ansatz nur das erste Sub-Array und keines der verbleibenden korrekt.
Was mache ich falsch und wie kann ich die Sortierleistung verbessern?
import numpy as np
# Generate some random data.
# I receive the actual data as a list, hence the .tolist()
aa = np.random.rand(10, 2000).tolist()
# This is the original line I need to process faster.
b1 = zip(*sorted(zip(*aa), key=lambda x: x[0]))
# This is my attempt at improving the above line's performance
b2 = np.sort(np.asarray(aa).T, axis=0).T
# Check if all sub-arrays are equal
for a, b in zip(*[b1, b2]):
print(np.array_equal(a, b))
Auf Anhieb können Sie versuchen, 'lambda x: x [0]' durch 'operator.itemgetter (0)' zu ersetzen. – chepner
Danke, ich werde das jetzt versuchen. Aber warum funktioniert der 'numpy' Ansatz nicht? Was mache ich falsch? – Gabriel