Summierung über ein Paar von Indizes (oder mehr) in Python

9

Eine Möglichkeit, den Gini-Koeffizienten einer Probe zu berechnen, ist die relative mittlere Differenz (RMD), die das Zweifache des Gini-Koeffizienten ist. RMD hängt von der mittleren Differenz ab, die gegeben ist durch:

Also muss ich jeden Unterschied zwischen einem Paar von Elementen in einer Probe (yi - yj) berechnen. Es hat mich ziemlich viel Zeit gekostet, einen Weg zu finden, aber ich möchte wissen, ob es eine Funktion gibt, die das für dich tut.

Zuerst habe ich das versucht, aber ich wette, dass es in großen Datensätzen sehr langsam ist (übrigens ist s das Beispiel):

%Vor%

Dann habe ich Folgendes versucht, was weniger verständlich aber schneller ist:

%Vor%

Gibt es etwas effizientes, aber leicht generalisierbares? Zum Beispiel, was ist, wenn ich über drei Indizes summieren möchte?

Dies ist das Beispiel, das ich verwendet habe:

%Vor%

Danke!

    
Robert Smith 27.12.2012, 00:15
quelle

1 Antwort

1

Für das MD-Beispiel, das Sie angeben, kann es durch Sortieren ausgenutzt werden. Sie können O (N * Log (N)) anstelle von O (N ^ 2)

erreichen %Vor%

Oft müssen Sie dynamische Programmierung oder andere Techniken verwenden, um diese schneller zu machen. Ich bin mir nicht sicher, ob es eine Lösung gibt, die "für jede Methode geeignet ist".

    
robert king 27.12.2012 00:54
quelle

Tags und Links