Java高性能线性代数库,具有类似于Scala的Breeze的功能



我正在寻找一个可以有效处理小矩阵的库(具有最低的内存足迹(。有一些选择,例如jblas或nd4j(我认为不是单线线程(,但它们缺乏下面描述的重要功能。

假设我有一个较大的矩阵和一个较小的矩阵,我需要将较小的矩阵添加到较大的矩阵中,而无需创建一个中间阵列或将较小的阵列添加到较大的阵列中零。换句话说,我想从Scala从微风库中获取功能 - 您可以在矩阵上创建一个视图,然后您可以使用该视图来执行任何操作,例如添加sub -matrix。

在EJML中打开问题。

好吧,似乎最好的选择是ojalgo。根据这项综合测试,它具有出色的性能。重要的是,它允许非常灵活的转换,可以在就场执行和懒惰(一次(。例如

PrimitiveDenseStore m1 = PrimitiveDenseStore.FACTORY.makeZero(10, 10);
PrimitiveDenseStore m2 = PrimitiveDenseStore.FACTORY.makeZero(3, 3);
m2.add(0, 0, 5D);
m2.add(1, 1, 2D);
m2.add(1, 2, 3D);
m2.add(2, 1, -10D);
m1
    .regionByColumns(4, 5, 6)
    .regionByRows(4, 5, 6)
    .modifyMatching(PrimitiveMath.ADD, m2);
assertThat(m1.aggregateAll(MINIMUM)).isEqualTo(5);

这里更多示例。真正美丽的API和功能。

相关内容

  • 没有找到相关文章

最新更新