什么是numpy数组[0,:] * = 1.23的MathNet等价物

时间:2016-05-19 13:51:54

标签: c# python mathnet mathdotnet

我必须在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;

2 个答案:

答案 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