首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nd4j permute没有变--我做错了什么?

Nd4j permute没有变--我做错了什么?
EN

Stack Overflow用户
提问于 2018-04-07 16:19:25
回答 2查看 68关注 0票数 0

我正试图像文档中描述的那样排列一个数组(实际上是一个指向mathworks的链接)。

然而,我的代码并没有再现结果。实际上,我的代码似乎什么也不做:

代码语言:javascript
复制
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));

foobarfoobar.permute的输出是相同的。我在哪里搞砸了?

可选的:任何信息的永久工作(语法方面)与更高的维度,如2d或3d矩阵,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-08 11:34:44

根据您链接到的文档,permute方法用于更改多维数组的维度。Nd4j.linspace创建一个向量(一个一维数组).因为只有一个维度,所以没有其他维度来改变它。而Mathworks的例子则创建了一个三维数组,并对第1和第3维进行了排列。

听起来你的意图是改变数组的各个元素(而不是整个维度)。在Nd4j中,我还没有见过一种解决这个问题的方法。

票数 1
EN

Stack Overflow用户

发布于 2021-09-02 08:28:29

我也有同样的问题。我不认为Nd4j内部有一种方法。我编写了一个重新排序ND4j向量的方法。

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49709426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档