【问题标题】:How to iterate over indices of a matrix?如何迭代矩阵的索引?
【发布时间】:2020-08-21 08:48:44
【问题描述】:

在 Python 中,当我们想要遍历任意维度的矩阵时,我们可以使用这行代码:

for index in np.ndindex(data.shape[2:]):

例如:

> for index in np.ndindex(3, 2, 1):
>     print(index) (0, 0, 0) (0, 1, 0) (1, 0, 0) (1, 1, 0) (2, 0, 0) (2, 1, 0)

在java中,我们可以通过确定数量的for循环以一种简单的方式来完成,但前提是有关维度的知识。但在任意维度上,算法一定更复杂。

ND4J lib 中是否有任何用于迭代索引的内置方法?

【问题讨论】:

  • 您认为Java 是一个合适的标签吗?
  • 在 java 中,任意维度数组被称为 jagged arrays stackoverflow.com/questions/40961513/… 查看@SaiNageswar 的回答
  • 绝对是的。 Java是一个正确的标签。 nd4j是一个java库,本质上我的问题是如何在java中重写python代码
  • 谢谢你。这不是我想要的,但它有帮助
  • @GiorgiTsiklauri 他在谈论 nd4j 库和 INDArray 数据结构(类似于 numpy 数组)

标签: java dl4j nd4j


【解决方案1】:

在 nd4j 中,我们有一个 NDIndexIterator 允许您遍历坐标。

示例如下:

NdIndexIterator shapeIter = new NdIndexIterator(2, 2);
//import org.nd4j.linalg.api.iter.NdIndexIterator;

long[][]  possibleSolutions = new long[][] {{0, 0}, {0, 1}, {1, 0}, {1, 1},};
for (int i = 0; i < 4; i++) {
    assertArrayEquals(possibleSolutions[i], shapeIter.next());
}

【讨论】:

  • 请避免仅链接的答案。此外,您的链接不起作用。
  • @GiorgiTsiklauri 介意撤销你的投票吗?我根据您的反馈修复了它。该链接早些时候对我有用,但它似乎已被缓存。请放松一点,让人们来修复它。
猜你喜欢
  • 2021-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-14
  • 2016-08-11
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多