获取 Nd4j 数组的任意切片

Mar*_*ood 3 java slice nd4j

我想以与使用 Numpy 相同的方式在任意大小的 Nd4j 中执行切片。

a = numpy.arange(100)
a[25:50]
Run Code Online (Sandbox Code Playgroud)

nd4j slice 方法仅接受维度和索引参数,而不接受长度。我怎样才能实现这个目标?

Man*_*dis 5

我知道这是一个老问题,但我在谷歌搜索这个问题时遇到了它。

通过检查源代码,slice我相信它只能返回完整的行/列,而不是从索引到索引的部分。您可以使用get带有NDArrayIndex实例参数的方法。例如,此代码是您的numpy代码的翻译。

import org.nd4j.linalg.api.ndarray.INDArray;
import static org.nd4j.linalg.factory.Nd4j.linspace;
import static org.nd4j.linalg.indexing.NDArrayIndex.interval;

class SliceExample {
    public static void main(String[] args) {
        INDArray a = linspace(0, 99, 100);    // up to 99 inclusive
        INDArray s = a.get(interval(25, 50)); // up to 50th non inclusive
    }
}
Run Code Online (Sandbox Code Playgroud)

NDArrayIndex 文档