想象两个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]


但是我不知道如何在合适的位置将'subarray'插入'a1'中...

注意:为了说明起见,我简化了问题。正在处理的数组是4D数组。

最佳答案

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

INDArray put(INDArrayIndex[] indices, INDArray element)


可以用来解决以下问题:

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


实际上,NDArrayIndex实现了INDArrayIndex接口。

09-26 22:40