C++中读取与保存不同维度的csv数据
- 一、保存csv数据
- 1.1 一维vector
- 1.2 二维vector
- 1.3 三维vector
- 1.4 五维vector
- 二、读取csv数据
- 2.1 一维vector
- 2.2 二维vector
- 2.3 三维vector
- 2.4 五维vector
一、保存csv数据
1.1 一维vector
#include <iostream>
#include <fstream>
#include <direct.h>
#include <io.h>
using namespace std;void Save_bias(vector<double> &bias, string names)
{string folderPath = "..//parameter_bias//" + names;if (0 != _access(folderPath.c_str(), 0)){_mkdir(folderPath.c_str());}ofstream pxData;pxData.open(folderPath + "//0.csv", std::ios::out | std::ios::trunc);for (int i = 0; i < bias.size(); i++){if (i == bias.size() - 1){pxData << bias[i] << std::endl;}else{pxData << bias[i] << ",";}}pxData.close();
}
1.2 二维vector
#include <iostream>
#include <fstream>
#include <direct.h>
#include <io.h>
using namespace std;void Save_means(vector<vector<double>> &means, string names)
{string folderPath = "..//parameter_mpvs//" + names;if (0 != _access(folderPath.c_str(), 0)){_mkdir(folderPath.c_str());}ofstream pxData;pxData.open(folderPath + "//0.csv", std::ios::out | std::ios::trunc);for (int i = 0; i < means.size(); i++){for (int j = 0; j < means[i].size(); j++){if (j == means[i].size() - 1){pxData << means[i][j] << std::endl;}else{pxData << means[i][j] << ",";}}}pxData.close();
}
1.3 三维vector
#include <iostream>
#include <fstream>
#include <direct.h>
#include <io.h>
using namespace std;void Save_weight(vector<vector<vector<double>>> &weight, string names)
{string folderPath = "..//parameter_weight//" + names;if (0 != _access(folderPath.c_str(), 0)){_mkdir(folderPath.c_str());}for (int j = 0; j < weight.size(); j++){ofstream pxData;if (j < 10){pxData.open(folderPath + "//0" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);}else{pxData.open(folderPath + "//" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);}for (int p = 0; p < weight[j].size(); p++){for (int q = 0; q < weight[j][p].size(); q++){if (q == weight[j][p].size() - 1){pxData << weight[j][p][q] << std::endl;}else{pxData << weight[j][p][q] << ",";}}}pxData.close();}
}
1.4 五维vector
#include <iostream>
#include <fstream>
#include <direct.h>
#include <io.h>
using namespace std;void Save_weight(vector<vector<vector<vector<vector<double>>>>> weight, string names)
{string init_file = "..//parameter_weight";if (0 != _access(init_file.c_str(), 0)){_mkdir(init_file.c_str());}string folderPath = init_file + "//" + names;if (0 != _access(folderPath.c_str(), 0)){_mkdir(folderPath.c_str());}for (int i = 0; i < weight.size(); i++){string folderPaths = folderPath + "//" + to_string(i);if (0 != _access(folderPaths.c_str(), 0)){_mkdir(folderPaths.c_str());}for (int j = 0; j < weight[i].size()*weight[i][0].size(); j++){ofstream pxData;if (j < 10 && weight[i].size()*weight[i][0].size() > 9){pxData.open(folderPaths + "//0" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);}else{pxData.open(folderPaths + "//" + to_string(j) + ".csv", std::ios::out | std::ios::trunc);}for (int p = 0; p < weight[i][j / weight[i].size()][j % weight[i][0].size()].size(); p++){for (int q = 0; q < weight[i][j / weight[i].size()][j % weight[i][0].size()][p].size(); q++){if (q == weight[i][j / weight[i].size()][j % weight[i][0].size()][p].size() - 1){pxData << weight[i][j / weight[i].size()][j % weight[i][0].size()][p][q] << std::endl;}else{pxData << weight[i][j / weight[i].size()][j % weight[i][0].size()][p][q] << ",";}}}pxData.close();}}
}
二、读取csv数据
2.1 一维vector
#include <iostream>
#include <fstream>
using namespace std;void Read_bias(vector<double> &bias, string names)
{string folderPath = "..//parameter_bias//" + names;ifstream infile(folderPath + "//0.csv", ifstream::_Nocreate);string line, number;while (std::getline(infile, line)){istringstream is(line);vector<double> lineArray;while (std::getline(is, number, ',')){lineArray.push_back(atof(number.c_str()));}bias = lineArray;}
}
2.2 二维vector
#include <iostream>
#include <fstream>
using namespace std;void Read_means(vector<vector<double>> &means, string names)
{string folderPath = "..//parameter_means//" + names;ifstream infile(folderPath + "//0.csv", ifstream::_Nocreate);string line, number;while (std::getline(infile, line)){istringstream is(line);vector<double> lineArray;while (std::getline(is, number, ',')){lineArray.push_back(atof(number.c_str()));}means.push_back(lineArray);}
}
2.3 三维vector
#include <iostream>
#include <fstream>
using namespace std;void Read_weight(vector<vector<vector<double>>> &weight, string names)
{string folderPath = "..//parameter_weight//" + names;string dir;for (int j = 0; j < weight.size(); j++){ofstream pxData;if (j < 10){dir = folderPath + "//0" + to_string(j) + ".csv";}else{dir = folderPath + "//" + to_string(j) + ".csv";}ifstream infile(dir, ifstream::_Nocreate);string line, number;vector<vector<double>> x;while (std::getline(infile, line)){istringstream is(line);vector<double> lineArray;while (std::getline(is, number, ',')){lineArray.push_back(atof(number.c_str()));}x.push_back(lineArray);}weight[j] = x;}
}
2.4 五维vector
#include <iostream>
#include <fstream>
using namespace std;void Read_weight(vector<vector<vector<vector<vector<double>>>>> &_weight, string names)
{string dir_path = "..//parameter_weight";for (int i = 0; i < _weight.size(); i++){for (int j = 0; j < _weight[i].size()*_weight[i][0].size(); j++){string dir;if (j < 10 && _weight[i].size()*_weight[i][0].size() > 9){dir = dir_path + "//" + names + "//" + to_string(i) + "//0" + to_string(j) + ".csv";}else{dir = dir_path + "//" + names + "//" + to_string(i) + "//" + to_string(j) + ".csv";}ifstream infile(dir, ifstream::_Nocreate);string line, number;vector<vector<double>> x;while (std::getline(infile, line)){istringstream is(line);vector<double> lineArray;while (std::getline(is, number, ',')){lineArray.push_back(atof(number.c_str()));}x.push_back(lineArray);}_weight[i][j / _weight[i].size()][j % _weight[i][0].size()] = x;}}
}