如何添加 ojalgo SparseArray 的所有元素?
How to add all elements of an ojalgo SparseArray?
我有一个 SparseArray 并且需要获得它所有元素的总和
我目前正在用一个同样大小的数组做一个数组的点积,但我觉得应该有更直接(和高效?)的东西
在这里找不到合适的方法:https://javadoc.scijava.org/ojAlgo/org/ojalgo/array/SparseArray.html
我有:
SparseArray<Double> lhCounts = SparseArray.factory(Primitive64Array.FACTORY, dim).make();
然后用它做一些操作,最后想要一些方法returns所有元素的总和,比如:
array_sum = lhCounts.sum();
class 主要用作其他实现的委托,但直接使用它完全没问题。在这种情况下,最直接的解决方案可能是:
array_sum = lhCounts.nonzeros().stream().mapToDouble(nz -> nz.doubleValue()).sum();
也可以改为创建 Array1D。它有更丰富的api。那么你可以这样做:
Array1D<Double> lhCounts1D = Array1D.PRIMITIVE64.makeSparse(dim);
array_sum = lhCounts1D.aggregateAll(Aggregator.SUM);
非零流在这种情况下也可用
array_sum = lhCounts1D.nonzeros().stream().mapToDouble(nz -> nz.doubleValue()).sum();
如果 "array" 实际上是二维或 N 维的东西,您可以创建一个 Array2D 或 ArrayAnyD。
Array2D<Double> lhCounts2D = Array2D.PRIMITIVE64.makeSparse(dim, dim);
ArrayAnyD<Double> lhCountsAnyD = ArrayAnyD.PRIMITIVE64.makeSparse(dim, dim, dim, dim);
Array1D、Array2D 和 ArrayAnyD api:s 专为密集结构而设计。稍后添加了将它们实例化为稀疏的能力。在稀疏情况下,你可以用它们做的一些事情可能不是很有效。你甚至可以做一些简单的蠢事,比如 hugeSparseArray.fillAll(1.0)
;
我有一个 SparseArray 并且需要获得它所有元素的总和
我目前正在用一个同样大小的数组做一个数组的点积,但我觉得应该有更直接(和高效?)的东西
在这里找不到合适的方法:https://javadoc.scijava.org/ojAlgo/org/ojalgo/array/SparseArray.html
我有:
SparseArray<Double> lhCounts = SparseArray.factory(Primitive64Array.FACTORY, dim).make();
然后用它做一些操作,最后想要一些方法returns所有元素的总和,比如:
array_sum = lhCounts.sum();
class 主要用作其他实现的委托,但直接使用它完全没问题。在这种情况下,最直接的解决方案可能是:
array_sum = lhCounts.nonzeros().stream().mapToDouble(nz -> nz.doubleValue()).sum();
也可以改为创建 Array1D。它有更丰富的api。那么你可以这样做:
Array1D<Double> lhCounts1D = Array1D.PRIMITIVE64.makeSparse(dim);
array_sum = lhCounts1D.aggregateAll(Aggregator.SUM);
非零流在这种情况下也可用
array_sum = lhCounts1D.nonzeros().stream().mapToDouble(nz -> nz.doubleValue()).sum();
如果 "array" 实际上是二维或 N 维的东西,您可以创建一个 Array2D 或 ArrayAnyD。
Array2D<Double> lhCounts2D = Array2D.PRIMITIVE64.makeSparse(dim, dim);
ArrayAnyD<Double> lhCountsAnyD = ArrayAnyD.PRIMITIVE64.makeSparse(dim, dim, dim, dim);
Array1D、Array2D 和 ArrayAnyD api:s 专为密集结构而设计。稍后添加了将它们实例化为稀疏的能力。在稀疏情况下,你可以用它们做的一些事情可能不是很有效。你甚至可以做一些简单的蠢事,比如 hugeSparseArray.fillAll(1.0)
;