我有一个上面有记录的数组,但是它是一个更维数组。现在,我只希望每个维度都有两个值。我想将它们放在两个独立的数组中。所以我的问题是如何将一维数组中的多维数组的值放进去。 data0下面的代码是我的一维数组,我要在其中放置多维数组每个部分的第一个值。
我想将myrecords [0](多数组)放在data0 [0](一个数组)中。 enter image description here
string path = "C:\\Users\\elyag\\Dropbox\\A Thesis\\Programma C#\\Programma_voor_User_interface_wijziging\\C#\\bin\\breng hier data in\\1000 1000\\DebugDT9857E_channel0_Channel1metfoam.txt";
string[] lines = File.ReadAllLines(path);
double[] data0 = new double[numberOfBuffers*samplesperbuffer];
// string[] lines = File.ReadAllLines("path");
string[][] myRecords = new string[numberOfBuffers * samplesperbuffer][];
int k = 0;
foreach (var line in lines)
{
var values = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
for (int i = 1; i < values.Length; i++)
{
if (myRecords[k] == null) myRecords[k] = new string[values.Length + 1];
myRecords[k][i] = values[i];
data0[i] = Convert.ToDouble(myRecords[i][0]);
}
k++;
}
答案 0 :(得分:0)
更好的解决方案是将值放入列表中。与数组不同,列表在添加项目时会自动增长
如果数据必须包含所有值:
var data = new List<double>();
foreach (string line in lines)
{
string[] values = line.Split(new char[]{' '},
StringSplitOptions.RemoveEmptyEntries);
foreach (string value in values)
{
data.Add(Convert.ToDouble(value));
}
}
double[] dataArray = data.ToArray();
如果数据必须仅包含每行的第一个值
var data = new List<double>();
foreach (string line in lines)
{
string[] values = line.Split(new char[]{' '},
StringSplitOptions.RemoveEmptyEntries);
if (values.Length > 0) { // Just in case the last line is empty.
data.Add(Convert.ToDouble(values[0]));
}
}
double[] dataArray = data.ToArray();
您的代码非常混乱,因为您正在创建一个长度为numberOfBuffers * samplesperbuffer
并且每个元素都包含另一个数组的数组。也就是说,总共将包含numberOfBuffers * samplesperbuffer * lengthOfSingleLines
个元素。这是你想要的吗?还是最终的一维数组仅包含numberOfBuffers * samplesperbuffer
个元素,其中samplesperbuffer是每行文本的值数量?
在这种情况下,您可以更改示例以直接生成最终数组
var data = new double[numberOfBuffers * samplesperbuffer];
int k = 0;
foreach (string line in lines)
{
string[] values = line.Split(new char[]{' '},
StringSplitOptions.RemoveEmptyEntries);
foreach (string value in values)
{
data[k++] = Convert.ToDouble(value));
}
}