C++中不同维度的数据保存与读取

C++中不同维度的数据保存与读取

  • 一、保存csv数据
    • [1.1 一维vector](#1.1 一维vector)
    • [1.2 二维vector](#1.2 二维vector)
    • [1.3 三维vector](#1.3 三维vector)
    • [1.4 五维vector](#1.4 五维vector)
  • 二、读取csv数据
    • [2.1 一维vector](#2.1 一维vector)
    • [2.2 二维vector](#2.2 二维vector)
    • [2.3 三维vector](#2.3 三维vector)
    • [2.4 五维vector](#2.4 五维vector)

一、保存csv数据

1.1 一维vector

cpp 复制代码
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

cpp 复制代码
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

cpp 复制代码
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

cpp 复制代码
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

cpp 复制代码
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

cpp 复制代码
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

cpp 复制代码
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

cpp 复制代码
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;
		}
	}
}
相关推荐
山登绝顶我为峰 3(^v^)340 分钟前
如何录制带备注的演示文稿(LaTex Beamer + Pympress)
c++·线性代数·算法·计算机·密码学·音视频·latex
Python×CATIA工业智造3 小时前
Frida RPC高级应用:动态模拟执行Android so文件实战指南
开发语言·python·pycharm
十五年专注C++开发3 小时前
CMake基础:条件判断详解
c++·跨平台·cmake·自动化编译
我叫小白菜4 小时前
【Java_EE】单例模式、阻塞队列、线程池、定时器
java·开发语言
狐凄4 小时前
Python实例题:基于 Python 的简单聊天机器人
开发语言·python
weixin_446122465 小时前
JAVA内存区域划分
java·开发语言·redis
悦悦子a啊5 小时前
Python之--基本知识
开发语言·前端·python
QuantumStack6 小时前
【C++ 真题】P1104 生日
开发语言·c++·算法
天若有情6736 小时前
01_软件卓越之道:功能性与需求满足
c++·软件工程·软件
whoarethenext6 小时前
使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
开发语言·c++·opencv·mfcc