在不丢失维度的情况下建立索引的 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
中有详细解释
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
中有详细解释