【发布时间】:2022-02-03 19:03:58
【问题描述】:
我想根据索引并使用计算在数组中设置值。在 numpy 中,我会写以下内容:
array[array < 0] = 2 * array[array < 0]
ND4J 也能实现这样的效果吗?
编辑:以及更复杂的语句/索引,例如:
array[array2 < 0] = 2 * array3[array2 < 0]
(假设array1、array2和array3的维度匹配)
【问题讨论】:
我想根据索引并使用计算在数组中设置值。在 numpy 中,我会写以下内容:
array[array < 0] = 2 * array[array < 0]
ND4J 也能实现这样的效果吗?
编辑:以及更复杂的语句/索引,例如:
array[array2 < 0] = 2 * array3[array2 < 0]
(假设array1、array2和array3的维度匹配)
【问题讨论】:
条件赋值是最接近的:
import org.nd4j.linalg.indexing.BooleanIndexing;
import org.nd4j.linalg.indexing.conditions.Conditions;
INDArray array1 = Nd4j.create(new double[] {1, 2, 3, 4, 5, 6, 7});
INDArray array2 = Nd4j.create(new double[] {7, 6, 5, 4, 3, 2, 1});
INDArray comp = Nd4j.create(new double[] {1, 2, 3, 4, 3, 2, 1});
BooleanIndexing.replaceWhere(array1, array2, Conditions.greaterThan(4));
您可以在其中使用很多条件和东西。我建议使用第二个数组并在整个数组上应用您想要的算法,并让 BooleanIndexing 替换您想要从传入的第二个数组中选择元素的内容。
【讨论】: