我正在使用 ND4j(目前版本 1.0.0-beta5)开发一个严重依赖 Java 数组操作的科学应用程序。在整个管道中,我需要动态选择 [2,195102] 矩阵的不连续子集(更精确地说是几十/数百列)。知道如何在这个框架中实现这一目标吗?
简而言之,我正在尝试实现这个 python/numpy 操作:
import numpy as np
arrayData = np.array([[1, 5, 0, 6, 2, 0, 9, 0, 5, 2],
[3, 6, 1, 0, 4, 3, 1, 4, 8, 1]])
arrayIndex = np.array((1,5,6))
res = arrayData[:, arrayIndex]
# res value is
# array([[5, 0, 9],
# [6, 3, 1]])
Run Code Online (Sandbox Code Playgroud)
到目前为止,我设法使用NDArray.getColumns函数(以及 indexArray 中的 NDArray.data().asInt() 来提供索引值)选择所需的列。问题在于,文档明确指出,关于计算过程中的信息检索,“请注意,这不应该用于速度”(请参阅 NDArray.ToIntMatrix()的文档以查看完整消息 - 不同的方法,相同的操作)。
我查看了NDArray.get()的不同原型,但似乎没有一个符合要求。我认为NDArray.getWhere()可能会起作用 - 如果它像我假设的那样只返回满足条件的元素 - 但到目前为止,使用它并不成功。在解释所需的参数/用法时,文档相对较少。
感谢大家的时间和帮助:)
编辑(04/11/2019):关于我所尝试的一些精确性。我尝试了 NDArray.get() 并使用了索引: …