Python 扩展切片numpy阵列的步骤

Python 扩展切片numpy阵列的步骤,python,numpy,Python,Numpy,我的问题与此类似: 假设我有一个数组,如下所示: a=[1,2,2,3,4,1,2,2,2,3,4,1,2,2,2,3,4….] 如何扩展切片,以便以特定间隔切片三个元素?即,如何从阵列中切片2? 我认为在这种情况下,基本的切片不起作用。您可以通过单独的索引来实现这一点 我们希望从索引1处的元素开始,获取3个元素,然后跳过3个元素: a = np.array([1, 2, 2, 2, 3, 4, 1, 2, 2, 2, 3, 4, 1, 2, 2, 2, 3, 4]) start = 1 ta

我的问题与此类似:

假设我有一个数组,如下所示: a=[1,2,2,3,4,1,2,2,2,3,4,1,2,2,2,3,4….]

如何扩展切片,以便以特定间隔切片三个元素?即,如何从阵列中切片2?
我认为在这种情况下,基本的切片不起作用。

您可以通过单独的索引来实现这一点

我们希望从索引1处的元素开始,获取3个元素,然后跳过3个元素:

a = np.array([1, 2, 2, 2, 3, 4, 1, 2, 2, 2, 3, 4, 1, 2, 2, 2, 3, 4])

start = 1
take = 3
skip = 3

indices = np.concatenate([np.arange(i, i + take) for i in range(start, len(a), take + skip)])

print(indices)
print(a[indices])
输出:

[ 1  2  3  7  8  9 13 14 15]
[2 2 2 2 2 2 2 2 2]

这里最简单的是:

 a = np.array([1,2,2,2,3,4,1,2,2,2,3,4,1,2,2,2,3,4])
 a.reshape(-1,6)[1:4].ravel()
或者如果
a
块不好:

period = 6
a.resize(np.math.ceil(a.size/period),period)
a[:,1:4].ravel()

这是一个带有
屏蔽的矢量化-

def take_sliced_regions(a, start, take, skip):
    r = np.arange(len(a))-start
    return a[r%(take+skip)<take]
In [90]: a = np.array([1,2,2,2,3,4,1,2,2,2,3,4,1,2,2,2,3,4,1,2])

In [91]: take_sliced_regions(a, start=1, take=3, skip=3)
Out[91]: array([2, 2, 2, 2, 2, 2, 2, 2, 2, 2])