In einem früheren Beitrag column vector with row means -- with std::accumulate? Ich fragte, ob es möglich war, STL-Funktionalität, Reihe mittels einer MatrixBerechnen Spalte Summen von Matrix Vektor <Vektor <double>> mit Iteratoren?
vector< vector<double> > data (rows, vector<double> (columns));
Die Top-Antwort von @benjaminlindley ist nicht nur einfach zu berechnen, was ich gesucht habe, ist es Eine Sache der Schönheit. Immer hoffnungsvoll dachte ich würde es so einfach zu berechnen Spalte bedeutet, so dass ein STL Äquivalent
vector<double> colmeans(data[0].size());
for (int i=0; i<data.size(); i++)
for (int j=0; j<data[i].size(); j++)
colmeans[j] += data[i][j]/data.size();
wo die mittlere nicht in jedem vector<double>
, aber über den gleichen Index in allen Vektoren berechnet:
colmeans[0] == (data[0][0] + data[1][0] + ... data[rows][0])/rows
colmeans[1] == (data[0][1] + data[1][1] + ... data[rows][1])/rows
colmeans[2] == (data[0][2] + data[1][2] + ... data[rows][2])/rows
...
colmeans[columns] == (data[0] [columns] +
data[1] [columns] +
...
data[rows][columns])/rows
Es stellt sich heraus, ganz anders zu sein - Akkumulieren will nicht auf Vektoren von Vektoren zu arbeiten. Ist es irgendwie möglich, mit dem []
Operator akkumulieren? Ich kann nicht einmal eine Zwischenform (um die for i
oder for j
Schleife loszuwerden), die nicht richtig erscheint.
Etwas mit accumulate
und []
Operator? Oder bind
?
Wenn Sie denken, dass Benjamins anwser gut ist (was übrigens), sollten Sie es als akzeptiert markieren. – rodrigo
Ehrlich gesagt, der schwierigste Teil davon ist der potentielle Kurzvektor in Ihrem äußeren Vektorenvektor. Dies ist das Grundproblem bei der Verwendung von 'vector>'. Es gibt keine Garantie dafür, dass jeder innere Vektor die gleiche Größe hat (außer natürlich, indem man ihn in seinem eigenen Code annimmt, der dieses Ding an erster Stelle auffüllt). Dies ist kein Problem, wenn man row-means findet, da es nicht wirklich wichtig ist, wie viele Spalten es gibt. –
WhozCraig
also @WhozCraig sagst du es ist ein Problem beim Finden von Spalten-Mitteln? BTW die Garantie, dass die inneren Vektorgrößen die gleichen sind, wird erfüllt, dies ändert sich nicht nach der Initialisierung - 'Daten' ist im Grunde eine Matrix von' Zeilen' x 'Spalten' –