【发布时间】:2019-09-29 05:59:15
【问题描述】:
ND4J INDArray 切片是通过java - Get an arbitrary slice of a Nd4j array - Stack Overflow 中回答的重载get() 方法之一实现的。当INDArray 占用一个连续的本地内存块时,使用get() 进行切片是否会复制原始内存(尤其是行切片,其中可以使用相同的后备内存创建一个新的INDArray)?
我找到了另一个INDArray 方法subArray()。这个有什么区别吗?
我问这个是因为我正在尝试创建一个可以直接从INDArrays 中提取数据的DatasetIterator,并且我想消除可能的开销。源码抽象太多,自己找不到实现。
python - Numpy: views vs copy by slicing - Stack Overflow有类似的关于NumPy的问题,在Indexing — NumPy v1.16 Manual可以找到答案:
这里的经验法则可以是:在左值索引的上下文中(即索引放置在赋值的左侧值中),不会创建数组的视图或副本(因为不需要)。但是,对于常规值,上述创建视图的规则确实适用。
【问题讨论】:
标签: slice deeplearning4j dl4j nd4j