c# – var [] []数组删除特定的单词
发布时间:2020-12-15 23:38:53 所属栏目:百科 来源:网络整理
导读:我有点问题.我有一个带有“NaN”值和双打的.csv(例如0.6034),我试图将CSV的双打读入数组[y] [x]. 目前,我读了整个.csv,但我无法在之后删除所有“NaN”值. (它应解析CSV并将数字添加到数组[y] [x]并保留所有“NaN”) 我目前的代码: var rows = File.ReadAllL
我有点问题.我有一个带有“NaN”值和双打的.csv(例如0.6034),我试图将CSV的双打读入数组[y] [x].
目前,我读了整个.csv,但我无法在之后删除所有“NaN”值. (它应解析CSV并将数字添加到数组[y] [x]并保留所有“NaN”) 我目前的代码: var rows = File.ReadAllLines(filepath).Select(l => l.Split(';').ToArray()).ToArray(); //reads WHOLE .CSV to array[][] int max_Rows = 0,j,rank; int max_Col = 0; foreach (Array anArray in rows) { rank = anArray.Rank; if (rank > 1) { // show the lengths of each dimension for (j = 0; j < rank; j++) { } } else { } // show the total length of the entire array or all dimensions max_Col = anArray.Length; //displays columns max_Rows++; //displays rows } 我尝试过搜索但是找不到任何有帮助我的东西. .CSV和期望的结果: NaN;NaN;NaN;NaN NaN;1;5;NaN NaN;2;6;NaN NaN;3;7;NaN NaN;4;8;NaN NaN;NaN;NaN;NaN 这是我的样本.csv.我应该更清楚,对不起!每一行都有一个NaN.我希望它显示如下: 1;5 2;6 3;7 4;8 这只是.csv的一个样本真正的csv有arround 60.000值…我需要用[y] [x]得到输入,例如[0] [0]应该显示“1”和[2] [ 1]应显示“7”等. 再次感谢你的帮助! 解决方法
如果要删除包含NAN的所有行(CSV的典型任务 – 清除所有不完整的行),例如
123.0; 456; 789 2.1; NAN; 35 <- this line should be removed (has NaN value) -5; 3; 18 你可以像这样实现它 double[][] data = File .ReadLines(filepath) .Select(line => line.Split(new char[] {';','t'},StringSplitOptions.RemoveEmptyEntries)) .Where(items => items // Filter first... .All(item => !string.Equals("NAN",item,StringComparison.OrdinalIgnoreCase))) .Select(items => items .Select(item => double.Parse(item,CultureInfo.InvariantCulture)) .ToArray()) // ... materialize at the very end .ToArray(); 使用string.Join显示行: string report = string.Join(Environment.NewLine,data .Select(line => string.Join(";",line))); Console.Write(report); 编辑:实际问题是仅从CSV中获取第2和第3个完整列: NaN;NaN;NaN;NaN NaN;1;5;NaN NaN;2;6;NaN NaN;3;7;NaN NaN;4;8;NaN NaN;NaN;NaN;NaN 期望的结果是 [[1,5],[2,6],[3,7],[4,8]] implmentation: double[][] data = File .ReadLines(filepath) .Select(line => line .Split(new char[] {';'},StringSplitOptions.RemoveEmptyEntries) .Skip(1) .Take(2) .Where(item => !string.Equals("NAN",StringComparison.OrdinalIgnoreCase)) .ToArray()) .Where(items => items.Length == 2) .Select(items => items .Select(item => double.Parse(item,CultureInfo.InvariantCulture)) .ToArray()) .ToArray(); 测试 // 1 Console.Write(data[0][0]); // 5 Console.Write(data[0][1]); // 2 Console.Write(data[1][0]); 所有价值观一气呵成: string report = string.Join(Environment.NewLine,line))); Console.Write(report); 结果: 1;5 2;6 3;7 4;8 编辑2:如果您只想提取非NaN值(请注意,初始CSV结构将被破坏): 1;2;3 1;2;3 NAN;4;5 4;5 <- please,notice that the structure is lost 6;NAN;7 -> 6;7 8;9;NAN; 8;9 NAN;10;NAN 10 NAN;NAN;11 11 然后 double[][] data = File .ReadLines(filepath) .Select(line => line .Split(new char[] {';'},StringSplitOptions.RemoveEmptyEntries) .Where(item => !string.Equals("NAN",StringComparison.OrdinalIgnoreCase))) .Where(items => items.Any()) .Select(items => items .Select(item => double.Parse(item,CultureInfo.InvariantCulture)) .ToArray()) .ToArray(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |