1

想象两个 INDArray:

  • a1.shape() = [2, 3] 和 a1 满是 1;

  • a2.shape() = [1, 2] 并且 a2 是 2。

我想在它们之间进行添加,例如:

?> result = a1.add(0, a2)
?> print(result)
[[3, 3, 1], [1, 1, 1]]
?> result = a1.add(1, a2)
?> print(result)
[[1, 1, 1], [3, 3, 1]]
?> result = a1.add(1, 1, a2)
?> print(result)
[[1, 1, 1], [1, 3, 3]]

我尝试先选择一个子数组:

?> subarray = a1.get(NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2))
?> print(subarray)
[1, 1]

执行添加:

?> subarray = subarray.add(a2)
?> print(subarray)
[3, 3]

但我不知道如何将“子数组”插入到“a1”的好位置......

注意:为了解释,我简化了问题。正在处理的数组是 4D 数组。

4

1 回答 1

1

我刚刚在文档中找到了以下功能:

INDArray put(INDArrayIndex[] indices, INDArray element)

这可以用来解决这个问题:

a1.put(
  new INDArrayIndex[] {NDArrayIndex.interval(0, 1), NDArrayIndex.interval(0, 2)},
  subarray
);

实际上 NDArrayIndex 实现了 INDArrayIndex 接口。

于 2019-05-29T09:34:41.647 回答