如何通过 ojAlgo 数组中的索引获取多个值?
How to get multiple values by index in an ojAlgo-array?
假设我有一个这样定义的 ojAlgo 数组
ArrayAnyD<Double> regularArray = ArrayAnyD.PRIMITIVE64.make(10);
regularArray.loopAll((final long[] ref) -> regularArray.set(ref, ref[0]*ref[0]));
它只包含从 0 到 9 的数字的平方,以及一些索引:
long[] idxs = {1, 3, 4, 7, 9}
现在,我想做一些类似于
的事情
slicedArray = regularArray[idxs]
这应该给我另一个包含 1.0, 9.0, 16.0, 49.0, 81.0
的数组。我如何用 ojAlgo 做到这一点?
regularArray.get(idxs)
只给我第一个值。
regularArray.sliceSet(idxs, 0)
returns 从第一个开始的所有值并忽略以下索引。
我怀疑我需要使用某种形式的 regularArray.loop 或 .loopAll,但我不确定如何让它工作
您可以执行以下操作:
ArrayAnyD<Double> array = ArrayAnyD.PRIMITIVE64.make(3, 3, n);
MatrixView<Double> matrices = array.matrices();
// A MatrixView is Iterable,
// but you can also go directly to the matrix you want
matrices.goToMatrix(78);
// Specific rows and columns
Access2D<Double> select = matrices.select(new int[] { 1, 2 }, new int[] { 0 });
Access2D<Double> rows = matrices.rows(1, 2); // All columns
Access2D<Double> columns = matrices.columns(0); // All rows
double value10 = matrices.doubleValue(1, 0);
double value20 = matrices.doubleValue(2, 0);
matrices.goToMatrix(99); // ...
要完成所有这些(正是那样),您需要 v51.3.0-SNAPSHOT 或更高版本。
假设我有一个这样定义的 ojAlgo 数组
ArrayAnyD<Double> regularArray = ArrayAnyD.PRIMITIVE64.make(10);
regularArray.loopAll((final long[] ref) -> regularArray.set(ref, ref[0]*ref[0]));
它只包含从 0 到 9 的数字的平方,以及一些索引:
long[] idxs = {1, 3, 4, 7, 9}
现在,我想做一些类似于
的事情slicedArray = regularArray[idxs]
这应该给我另一个包含 1.0, 9.0, 16.0, 49.0, 81.0
的数组。我如何用 ojAlgo 做到这一点?
regularArray.get(idxs)
只给我第一个值。regularArray.sliceSet(idxs, 0)
returns 从第一个开始的所有值并忽略以下索引。
我怀疑我需要使用某种形式的 regularArray.loop 或 .loopAll,但我不确定如何让它工作
您可以执行以下操作:
ArrayAnyD<Double> array = ArrayAnyD.PRIMITIVE64.make(3, 3, n);
MatrixView<Double> matrices = array.matrices();
// A MatrixView is Iterable,
// but you can also go directly to the matrix you want
matrices.goToMatrix(78);
// Specific rows and columns
Access2D<Double> select = matrices.select(new int[] { 1, 2 }, new int[] { 0 });
Access2D<Double> rows = matrices.rows(1, 2); // All columns
Access2D<Double> columns = matrices.columns(0); // All rows
double value10 = matrices.doubleValue(1, 0);
double value20 = matrices.doubleValue(2, 0);
matrices.goToMatrix(99); // ...
要完成所有这些(正是那样),您需要 v51.3.0-SNAPSHOT 或更高版本。