zip Funktion Hilfe mit Tupeln

7

Ich hoffe, dass mir jemand mit einem Problem helfen kann, bei dem ich feststecke. Ich habe eine große Anzahl von Tupeln (& gt; 500), die wie folgt aussehen:

%Vor%

Ein Ausschnitt meines Codes lautet:

%Vor%

Mir ist klar, dass der obige Code nicht korrekt ist. Ich versuche einen Weg zu finden, alle Werte A zusammen zu addieren, alle Werte von B zusammen, alle Werte von C zusammen und alle Werte von D zusammen mit der Zip-Funktion. Zum Beispiel möchte ich etwas drucken, das so aussieht:

%Vor%

Kann jemand bitte helfen? Vielen Dank für Ihre Zeit.

    
drbunsen 17.04.2011, 12:40
quelle

5 Antworten

13
%Vor%

Um dies mit einem beliebig großen Satz von Tupeln zu tun:

%Vor%

sidenote: Beachten Sie in Python3, dass zip ein lazerisches iterable zurückgibt, das Sie immer explizit in eine Liste umwandeln können, wie jede andere Art von iterable: list (zip (...))

(Danke an Seganku für den Fehler in Beispielen in einem Schnitt zu fangen was von anderen Redakteuren dreimal abgelehnt wurde)

    
ninjagecko 17.04.2011, 12:47
quelle
4
%Vor%

Der erste Aufruf, in zip , invertiert die Listen - erstellt eine Liste aller ersten Elemente, aller zweiten Elemente usw.

Der zweite Aufruf, map , ruft sein erstes Argument sum auf seinem zweiten Argument auf, diese Listen, und gibt eine Liste der Ergebnisse von sum zurück - was zufällig die Summe ist.

    
user79758 17.04.2011 12:48
quelle
2

Wenn Ihre Sets alle dieselbe Größe haben und Sie in C Python arbeiten, sollten Sie numpy in Erwägung ziehen. Sie können dies wie folgt tun:

%Vor%

Numpy konvertiert Ihre Werte in ein Array und arbeitet mit ihnen effizient mit optimierten LAPACK-Funktionen.

Um Leistung zu vergleichen, profilierte ich unter zwei Annahmensätzen. In der ersten nehme ich an, dass Ihre Daten so gespeichert werden, dass der Import in ein Numpy-Array effizient ist. Daher habe ich die Zeit, die zum Konvertieren von Sets in ein Array benötigt wird, nicht berücksichtigt. Ich habe die Leistung von np.sum mit [sum (x) für x in zip (* sets)] verglichen. Hier sind die Zeit-Ergebnisse für jeden Fall:

%Vor%

Die Schlussfolgerung ist, dass numpy schneller ist, wenn Ihre Eingabedaten einfach mit numpy importiert werden können.

    
Carl F. 17.04.2011 12:48
quelle
0

Wenn Sie alle Tupel in einer Liste haben, können Sie reduce() : %Vor%     

Felix Kling 17.04.2011 12:51
quelle
0
%Vor%     
Vasil 17.04.2011 12:53
quelle

Tags und Links