【问题标题】:OjAlgo How to map / update all the values in PrimitiveDenseStore?OjAlgo 如何映射/更新 PrimitiveDenseStore 中的所有值?
【发布时间】:2017-06-06 19:19:30
【问题描述】:

假设我有一个 2x2 矩阵作为 PrimitiveDenseStore

pstore = [ 1 2 
           3 4 ]

是否可以根据给定的匿名函数映射所有这些值,例如

pstore.map(x -> x * x)

所以结果是

pstore = [ 1 4
           9 16 ]

【问题讨论】:

    标签: java matrix ojalgo


    【解决方案1】:

    好吧,我对 java 的 UnaryOperator 感到困惑,原来 ojAlgo 需要自己的功能接口 PrimitiveFunction.Unary

    PrimitiveFunction.Unary square = arg -> arg * arg;
    pstore.modifyAll(square);
    

    【讨论】:

      【解决方案2】:

      至少有 3 种选择供您“调查”:

      pstore.loopAll(...);
      pstore.modifyAll(...);
      pstore.operateOnAll(...);
      

      和/或你可以看看这些问题的答案:

      OjAlgo : Is there a way to add/subtract a double from all elements of a PrimitiveDenseStore in ojAlgo?

      Elementwise multiplication two matrices or PrimitiveDenseStores in ojAlgo

      【讨论】:

      • @apte 是的,我对您的源代码和这些答案进行了深入调查,并检查了这 3 种方法。但仍然无法弄清楚如何将自定义 lambda 函数而不是给定 UnaryFunction 传递给 operationonall 方法。没有例子就无法弄清楚某些事情。文档很模糊。
      • 我猜主要问题是 org.ojalgo.function 包中的接口不是 java8 功能的——它们通常有两种方法可以实现。早在 Java8 之前就为 ojAlgo 选择了这种设计。匿名类没有问题,但在很多情况下,lamba 表达式和函数引用不起作用。 pstore.loopAll(...) 替代方案适用于 lambda 表达式。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多