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,那是基于观点的。
<小时/>注意:此方法将创建数据的副本,而不是相同数据的 View ,因为任意索引可能不会产生连续的 View 。这在问题Avoid copying when indexing a numpy arrays using lists中有详细解释。
关于Pythonic 方式在不丢失维度的情况下建立索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59733444/