numpy array[0,:] *= 1.23 的 MathNet 等价物是什么
What is the MathNet equivalent of numpy array[0,:] *= 1.23
我必须在 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;
?
有几种方法,肯定比 for
更干净。
从充满 1
.
的矩阵开始
Matrix<double> mtx = Matrix<double>.Build.Dense(2, 3, 1);
mtx.SetRow(0, mtx.Row(0).Multiply(1.23));
Console.WriteLine(mtx);
returns
DenseMatrix 2x3-Double
1,23 1,23 1,23
1 1 1
为了完整性:Math.NET Numerics 本身确实支持一种与您的 NumPy 示例有些接近的表示法。 C# 不支持它,但其他更强大的 .Net 语言如 F# 支持:
let mtx = matrix [[0.;1.;2.];[3.;4.;5.]]
mtx.[0,*] <- 1.23 * mtx.[0,*]
我必须在 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;
?
有几种方法,肯定比 for
更干净。
从充满 1
.
Matrix<double> mtx = Matrix<double>.Build.Dense(2, 3, 1);
mtx.SetRow(0, mtx.Row(0).Multiply(1.23));
Console.WriteLine(mtx);
returns
DenseMatrix 2x3-Double
1,23 1,23 1,23
1 1 1
为了完整性:Math.NET Numerics 本身确实支持一种与您的 NumPy 示例有些接近的表示法。 C# 不支持它,但其他更强大的 .Net 语言如 F# 支持:
let mtx = matrix [[0.;1.;2.];[3.;4.;5.]]
mtx.[0,*] <- 1.23 * mtx.[0,*]