如您所见,行主矩阵的乘法很容易。
但在我的情况下,我有列主矩阵,我如何使用linq乘以列主矩阵?
行主矩阵
$null
列主矩阵
double[][] M1 = { {a1, b1}, {a2, b2}, {a3, b3} };
double[] M2 = { a, b };
double[] M3 = M1.Select(inner => inner.Zip(M2, (x, y) => x*y).Sum()).ToArray();
这些是预期的结果。 (对不起写作样本太懒了。)
double[][] M1 = {{a1,a2,a3},{b1,b2,b3}};
double[] M2 = { a, b };
double[] M3 = ?;
答案 0 :(得分:0)
我错过了groupby解决方案。
double[] M3 = M1.SelectMany(inner => inner.Select((x, i) => (x, i))
.GroupBy(t => t.i, t => t.x, (t, e) =>
e.Zip(M2, (x, y) => x * y).Sum()))
.ToArray();