Trong một bài trước column vector with row means -- with std::accumulate? Tôi hỏi nếu nó đã có thể sử dụng chức năng STL, để tính toán phương tiện hàng của một ma trậncác cột tính toán của ma trận vector <vector <double>> với trình vòng lặp?
vector< vector<double> > data (rows, vector<double> (columns));
Câu trả lời đầu bởi @benjaminlindley không chỉ là chỉ là những gì tôi đang tìm kiếm, nó là một điều đẹp. Mãi mãi hy vọng tôi nghĩ rằng nó sẽ được dễ dàng để tính toán cột nghĩa, vì vậy tương đương STL của
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();
nơi bình không tính bên trong mỗi vector<double>
, nhưng qua các chỉ số giống nhau trong tất cả các vectơ:
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
Hóa ra là khá khác nhau - tích lũy không muốn hoạt động trên vectơ của vectơ. Có phải bằng cách nào đó có thể sử dụng tích lũy với toán tử []
không? Tôi thậm chí không thể đưa ra một hình thức trung gian (để thoát khỏi eather các for i
hoặc for j
vòng lặp) mà dường như không đúng.
Có gì đó với accumulate
và toán tử []
? Hoặc bind
?
Nếu bạn nghĩ rằng anwser của Benjamin là tốt (trong đó, BTW, nó là) bạn nên đánh dấu nó là chấp nhận. – rodrigo
một cách trung thực phần khó nhất của điều này sẽ là vectơ ngắn tiềm năng trong vec-tơ vectơ bên ngoài của bạn. Đây là vấn đề cơ bản khi sử dụng 'vector>'. Không có gì đảm bảo rằng mỗi vectơ bên trong có cùng kích thước (ngoại trừ, tất nhiên bằng cách giả định nó trong mã của riêng bạn, mà nó đang phổ biến thứ này ở nơi đầu tiên). Đây không phải là một vấn đề khi tìm hàng nghĩa, vì bạn không thực sự quan tâm có bao nhiêu cột. –
WhozCraig
vì vậy @WhozCraig là bạn nói rằng đó là một vấn đề khi tìm cột có nghĩa là? BTW đảm bảo rằng các kích thước vectơ bên trong giống nhau được đáp ứng, điều này không thay đổi sau khi khởi tạo - 'dữ liệu' cơ bản là ma trận của' hàng' x 'cột' –