C++实现宽型矩阵到长型矩阵的转换 (附带行名和列名)
C++实现宽型矩阵到长型矩阵的转换 (附带行名和列名)
在数据处理和分析中,我们经常需要在宽型矩阵和长型矩阵之间进行转换。宽型矩阵通常用于存储原始数据,而长型矩阵则更适合用于分析和建模。
以下是一个使用C++实现带有行名和列名的宽型矩阵转换为长型矩阵的示例代码:cpp#include
using namespace std;
// 定义宽型矩阵的结构体struct WideMatrix { vector
// 定义长型矩阵的结构体struct LongMatrix { vector
// 将宽型矩阵转换为长型矩阵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++进行宽型矩阵到长型矩阵的转换,并保留了行名和列名信息。这对于数据分析和处理非常有用,因为它可以帮助我们更好地组织和理解数据。
原文地址: https://www.cveoy.top/t/topic/fwdd 著作权归作者所有。请勿转载和采集!