vector de columna con medios de fila - con std :: acumular?
En un esfuerzo por ser lo más perezoso posible, leo en una matriz como
vector< vector<double> > data ( rows, vector<double> ( columns ) );
y tratar de usar tantas golosinas STL como pueda.
Una cosa que debo hacer a continuación es calcular los medios de la fila. En la programación de estilo C eso sería
vector<double> rowmeans( data.size() );
for ( int i=0; i<data.size(); i++ )
for ( int j=0; j<data[i].size(); j++ )
rowmeans[i] += data[i][j]/data[i].size();
EnEn C ++, ¿cómo calcular la media de un vector de enteros usando una vista vectorial y gsl_stats_mean? se explica que para un vector de números puede calcular una media de vector en una línea sin llamar al operador size () en cada paso:
double mean = std::accumulate(stl_v.begin(), stl_v.end(), 0.0) / stl_v.size();
¿Es posible usar estos iteradores sobre un vector de vectores? Una forma intermedia es
vector<double> rowmeans( rows );
for ( int i=0; i<data.size(); i++ )
rowmeans[i] = std::accumulate(data[i].begin(), data[i].end(), 0.0) / data[i].size();
¡Ya se ha ido 1 línea! pero utilizando las funciones STL, ¿es posible deshacerse del índice [i] también? (En el nivel superior solo es cuestión de recolectar los medios de la fila).