我正试图像文档中描述的那样排列一个数组(实际上是一个指向mathworks的链接)。
然而,我的代码并没有再现结果。实际上,我的代码似乎什么也不做:
INDArray foobar = Nd4j.linspace(0, 2, 3);
System.out.println("foobar = " + foobar);
System.out.println("foobar.permute(2, 1, 0) = " + foobar.permute(2, 1, 0));foobar和foobar.permute的输出是相同的。我在哪里搞砸了?
可选的:任何信息的永久工作(语法方面)与更高的维度,如2d或3d矩阵,将不胜感激。
发布于 2018-04-08 11:34:44
根据您链接到的文档,permute方法用于更改多维数组的维度。Nd4j.linspace创建一个向量(一个一维数组).因为只有一个维度,所以没有其他维度来改变它。而Mathworks的例子则创建了一个三维数组,并对第1和第3维进行了排列。
听起来你的意图是改变数组的各个元素(而不是整个维度)。在Nd4j中,我还没有见过一种解决这个问题的方法。
发布于 2021-09-02 08:28:29
我也有同样的问题。我不认为Nd4j内部有一种方法。我编写了一个重新排序ND4j向量的方法。
publin INDArray reorder(int[] index) {
INDArray copy = q.dup();
for (int i=0; i<copy.length(); i++){
copy.put(i, q.getScalar(index[i]));
}
return copy;
}https://stackoverflow.com/questions/49709426
复制相似问题