在不丢失维度的情况下建立索引的 Pythonic 方式

Pythonic way to index without losing dimensions

data = np.zeros((5, 16, 16))

我想访问这个 numpy 数据数组的大小为 1 的切片。定义我不想要的内容可能会有所帮助:

>>> data[2].shape
(16, 16)

相反,我想保持维度不变。这里想到了几种方法:

>>> np.expand_dims(data[2], 0).shape
(1, 16, 16)

>>> data[2:3].shape
(1, 16, 16)

>>> data[None, 2].shape
(1, 16, 16)

这些选项中哪一个更符合 pythonic,或者这里有更好的解决方案吗?

您也可以使用具有单个元素的索引列表来完成此操作:

>>> data[[2]].shape
(1, 16, 16)

至于哪个更 pythonic,那比什么都更基于意见。


注意:此方法将创建数据的副本而不是相同数据的视图,因为任意索引可能不会产生连续的视图。这在问题 Avoid copying when indexing a numpy arrays using lists

中有详细解释