【发布时间】:2018-09-30 17:15:53
【问题描述】:
我有一个 3D numpy 数组 x。我想在轴 0 上获取每个切片的子集(每个子集的形状相同,但每个切片的开始和结束索引可能不同)并将它们组合成一个单独的 3D numpy 数组。我可以做到这一点
import numpy as np
x = np.arange(24).reshape((3, 4, 2))
starts = [0, 2, 1]
ends = [2, 4, 3]
np.stack([x[i, starts[i]:ends[i]] for i in range(3)])
但是 1) 有没有什么方法可以使用精美的索引在单个操作中执行此操作,并且 2) 这样做会加快速度吗?
【问题讨论】:
-
开始和结束之间的差异在所有元素中是否总是相同的,比如这里的 2?
-
是的,没错
标签: python arrays numpy indexing