【问题标题】:Ojalgo - Load Matrix from CSVOjalgo - 从 CSV 加载矩阵
【发布时间】:2020-11-09 11:12:57
【问题描述】:

我有一些带有标题的大型 CSV 文件,其中包含我想加载到矩阵中的值。

我遇到过 LineSplittingParser 类,但找不到关于如何使用它从文件中实际获取 Matrix 对象的好例子。

谁能举一个小例子来说明如何实现这一点?

【问题讨论】:

    标签: java csv ojalgo


    【解决方案1】:

    不确定 LineSplittingParser 是否是读取矩阵的好选择,但类似这样的方法可能有效:

    File fileToParse = null;
    // You have to know the number of rows and columns
    int numRows = 9, numCols = 9;
    
    Primitive64Store matrix = Primitive64Store.FACTORY.make(numRows, numCols);
    
    LineSplittingParser parser = new LineSplittingParser("\\s+", true);
    
    AtomicInteger row = new AtomicInteger();
    
    boolean skipHeader = true;
    
    parser.parse(fileToParse, skipHeader, line -> {
    
        int i = row.intValue();
    
        for (int j = 0; j < line.length; j++) {
            matrix.set(i, j, Double.parseDouble(line[j]));
        }
    
        row.incrementAndGet();
    });
    

    此代码未经测试 - 它只是一个大纲 - 您必须将 "\\s+" 替换为文件中使用的任何分隔符。

    【讨论】:

    • 如果有比 LineSplittingParser 更好的方法,我很乐意听到。特别是考虑到我不会提前知道列和行的数量。
    猜你喜欢
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2021-09-13
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多