gpt4 book ai didi

c# - 将两个 double[] 数组组合成 double[,]

转载 作者:行者123 更新时间:2023-11-30 15:32:36 24 4
gpt4 key购买 nike

我经常需要将两个数组组合成一个矩阵(相同的长度和类型)。我想知道是否有比以下更优雅的 linq 方式:

var result = new double[dt.Count, 2];

for (int i = 0; i < dt.Count; i++)
{
result[i, 0] = dts[i];
result[i, 1] = dt[i];
}

我试过了

var result = dts.zip(dt, (a,b) => new{a,b})

和:

var result = dts.Concat(dt).ToArray()

但也没有做我想做的...

最佳答案

框架中没有任何内容,但这里有一个通用解决方案(适用于 2 个或更多数组):

public static class ArrayConvert
{
public static T[,] To2DArray<T>(params T[][] arrays)
{
if (arrays == null) throw new ArgumentNullException("arrays");
foreach (var a in arrays)
{
if (a == null) throw new ArgumentException("can not contain null arrays");
if (a.Length != arrays[0].Length) throw new ArgumentException("input arrays should have the same length");
}

var height = arrays.Length;
var width = arrays[0].Length;

var result = new T[width, height];

for (int i = 0; i < height; i++)
for (int j = 0; j < width; j++)
{
result[i, j] = arrays[i][j];
}

return result;
}
}

然后可以按如下方式使用:

var convertedArray = ArrayConvert.To2DArray(new[]{1,2,3}, new[]{4,5,6}, new[]{7,8,9});

关于c# - 将两个 double[] 数组组合成 double[,],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18735376/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com