C++实现宽型矩阵到长型矩阵的转换 (附带行名和列名)

在数据处理和分析中,我们经常需要在宽型矩阵和长型矩阵之间进行转换。宽型矩阵通常用于存储原始数据,而长型矩阵则更适合用于分析和建模。

以下是一个使用C++实现带有行名和列名的宽型矩阵转换为长型矩阵的示例代码:cpp#include #include #include #include

using namespace std;

// 定义宽型矩阵的结构体struct WideMatrix { vector rowNames; vector colNames; vector<vector> data;};

// 定义长型矩阵的结构体struct LongMatrix { vector rowNames; vector colNames; vector data;};

// 将宽型矩阵转换为长型矩阵LongMatrix convertWideToLong(const WideMatrix& wideMatrix) { LongMatrix longMatrix; longMatrix.rowNames = wideMatrix.rowNames; longMatrix.colNames = wideMatrix.colNames;

for (int i = 0; i < wideMatrix.rowNames.size(); i++) {        for (int j = 0; j < wideMatrix.colNames.size(); j++) {            longMatrix.data.push_back(wideMatrix.data[i][j]);        }    }

return longMatrix;}

int main() { // 创建一个宽型矩阵 WideMatrix wideMatrix; wideMatrix.rowNames = {'Row1', 'Row2', 'Row3'}; wideMatrix.colNames = {'Col1', 'Col2', 'Col3'}; wideMatrix.data = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };

// 将宽型矩阵转换为长型矩阵    LongMatrix longMatrix = convertWideToLong(wideMatrix);

// 输出长型矩阵的内容    for (int i = 0; i < longMatrix.rowNames.size(); i++) {        for (int j = 0; j < longMatrix.colNames.size(); j++) {            int dataIndex = i * longMatrix.colNames.size() + j;            cout << longMatrix.rowNames[i] << ' ' << longMatrix.colNames[j] << ' ' << longMatrix.data[dataIndex] << endl;        }    }

return 0;}

在上述代码中,我们首先定义了一个宽型矩阵的结构体WideMatrix,其中包含了行名、列名和数据。然后定义了一个长型矩阵的结构体LongMatrix,也包含了行名、列名和数据。接下来,我们实现了一个函数convertWideToLong,用于将宽型矩阵转换为长型矩阵。在main函数中,我们创建了一个宽型矩阵,并将其转换为长型矩阵,最后输出了长型矩阵的内容。

这段代码清晰地展示了如何使用C++进行宽型矩阵到长型矩阵的转换,并保留了行名和列名信息。这对于数据分析和处理非常有用,因为它可以帮助我们更好地组织和理解数据。

C++实现宽型矩阵到长型矩阵的转换 (附带行名和列名)

原文地址: https://www.cveoy.top/t/topic/fwdd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录