Summe der Produkte von Paaren in einer Liste

8

Das ist das Problem, das ich habe. Eine Liste gegeben

%Vor%

Ich möchte für die Summe jedes Elements multipliziert mit nachfolgenden Elementen

rechnen %Vor%

In diesem Fall ist die Antwort 608 .

Gibt es eine Möglichkeit, dies vielleicht mit itertools oder nativ mit numpy zu tun?

Unten ist eine Funktion, die ich mir ausgedacht habe. Es macht den Job, aber es ist alles andere als ideal, da ich auch andere Sachen hinzufügen möchte.

%Vor%

Jede Hilfe wird geschätzt.

NB: Falls Sie sich fragen, versuche ich Krippendorfs Alpha zu implementieren > mit Pandas

    
user1043144 04.05.2015, 20:25
quelle

6 Antworten

6

Hier ist eine Möglichkeit:

%Vor%

, aber ich würde mit der Antwort von @ user2357112 gehen.

    
Warren Weckesser 04.05.2015, 20:30
quelle
25
%Vor%

Dies nutzt einige mathematische Vereinfachungen, um im Vergleich zu anderen Lösungen, die eine quadratische Leistung haben können, in linearer Zeit und konstantem Raum zu arbeiten.

Hier ist ein Diagramm, wie das funktioniert. Angenommen x = array([2, 3, 1]) . Wenn Sie die Produkte dann als Bereiche von Rechtecken betrachten:

%Vor%     
user2357112 04.05.2015 20:30
quelle
7

Sie möchten tatsächlich Kombinationen nicht Produkt:

%Vor%

Selbst wenn Sie ein numpliges Array aus einer Python-Liste erstellen, @ user2357112 beantworten Sie den ganzen Bereich mit dem Rest von uns.

%Vor%

Alle Listen / Arrays hatten 50 Elemente.

Die Logik von user2357112 zu stehlen und sie in einer normalen Liste mit sum python zu verwenden, ist ziemlich effizient:

%Vor%

Aber für ein großes Array ist die numpige Lösung immer noch deutlich schneller.

    
Padraic Cunningham 04.05.2015 20:33
quelle
4

Es sieht so aus, als ob Sie jede Kombination von zwei Elementen (Paaren) in dieser Liste erhalten möchten, das Produkt jedes Paares berechnen und über diese Produkte summieren möchten:

%Vor%

Der One-Liner, um dies zu tun:

%Vor%     
inspectorG4dget 04.05.2015 20:31
quelle
1

Wenn Sie daran interessiert sind, dies manuell zu tun (ohne Hilfe der stdlib):

%Vor%     
inspectorG4dget 04.05.2015 20:34
quelle
1

Ein Ansatz -

%Vor%

Ein anderer -

%Vor%     
Divakar 04.05.2015 20:31
quelle

Tags und Links