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
Hier ist eine Möglichkeit:
%Vor%, aber ich würde mit der Antwort von @ user2357112 gehen.
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:
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.
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%Wenn Sie daran interessiert sind, dies manuell zu tun (ohne Hilfe der stdlib):
%Vor%