假设我有:
double[] someArray = new [] { 11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44 };
有没有开箱即用的方法从这个数组中创建一个4x4矩阵而不必将其自己分成4个阵列?
我知道这样做很简单,但我正在探索开箱即用的东西。
修改
抱歉不清楚(以为标题是):
我想知道的是Math.NET Numerics中的Matrix构建器是否具有开箱即用的功能。类似的东西:
Matrix<double> someMatrix = DenseMatrix.OfArray(columns: 4, rows: 4, data: someArray);
答案 0 :(得分:4)
通过查看documentation,您可以直接使用构造函数,或者使用函数OfColumnMajor(int rows, int columns, IEnumerable<double> columnMajor)
,如果您的数据是按列主要顺序。
代码如下所示:
//Using the constructor
Matrix<double> someMatrix = new DenseMatrix(4, 4, someArray)
//Using the static function
Matrix<double> someMatrix = DenseMatrix.OfColumnMajor(4, 4, someArray);
如果您的数据按行主顺序排列,则可以拆分为数组并使用OfRows
函数之一,或者使用构造函数并转置矩阵,如Christoph所建议的那样。