gpt4 book ai didi

c# - 在 LINQ C# 中计算数组

转载 作者:太空狗 更新时间:2023-10-30 00:30:59 25 4
gpt4 key购买 nike

我想使用 linq 和单个短语来计算相关矩阵。我该怎么做(如果可能的话)?

假设我已经有一个名为 volatilites 的大小为 N 的数组,而 Returns 是一个锯齿状数组,其中 N 个数组的大小都相同。

我也在用:

using stats = MathNet.Numerics.Statistics.ArrayStatistics

这是我想在 LINQ 中编写的代码:

double[,] correlation_matrix = new double[N,N];
for (int i=0; i<N;i++){
for (int j = i + 1; j < N; j++){
correlation_matrix [i,j]= stats.Covariance(Returns[i], Returns[j]) / (volatilities[i] * volatilities[j]); // stores it to check values
}
}

谢谢!

最佳答案

如果你让自己有一个数组数组,你可以这样做

var correlation_matrix = 
Returns.Select((r_i, i) =>
Returns.Where((r_j, j) => j > i).Select((r_j, j) =>
stats.Covariance(r_i, r_j) / (volatilities[i] * volatilities[j])
).ToArray()
).ToArray();

如果你想使用范围(根据你的评论),你可以这样做

var N = Returns.Length;
var correlation_matrix =
Enumerable.Range(0, N).Select(i =>
Enumerable.Range(i + 1, N - i - 1).Select(j =>
stats.Covariance(Returns[i], Returns[j]) / (volatilities[i] * volatilities[j])
).ToArray()
).ToArray();

这并不是说您应该这样做。循环版本更具可读性和性能。

关于c# - 在 LINQ C# 中计算数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31321356/

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