我必须在c#(MathNet)中移植一些python(numpy)代码。 我可以用python编写:
mtx = np.array([[0,1,2],[3,4,5]])
mtx[0,:] *= 1.23 #multiply all elements in row 0 by 1.23
我如何在MathNet中执行此操作?是否有更好(更快)的解决方案:
Matrix<double> mtx = Matrix<double>.Build.Dense(2,3);
//...
for(int i = 0; i < mtx.ColumnCount; i++)
mtx[0,i] *= 1.23;
答案 0 :(得分:2)
为了完整性:Math.NET Numerics本身确实支持一个与你的NumPy示例有点接近的符号。 C#不支持它,但其他更强大的.Net语言如F#:
let mtx = matrix [[0.;1.;2.];[3.;4.;5.]]
mtx.[0,*] <- 1.23 * mtx.[0,*]
答案 1 :(得分:1)
有几种方法,确保比for
更清洁。
从矩阵满为1
开始。
Matrix<double> mtx = Matrix<double>.Build.Dense(2, 3, 1);
mtx.SetRow(0, mtx.Row(0).Multiply(1.23));
Console.WriteLine(mtx);
返回
DenseMatrix 2x3-Double
1,23 1,23 1,23
1 1 1