我正在寻找一个可以有效处理小矩阵的库(具有最低的内存足迹(。有一些选择,例如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和功能。