一维 numpy 数组的高级切片

Advanced slicing over 1D numpy array

是否可以在索引 numpy.array 时应用少量条件?在我的例子中,我想显示前 10 个元素,然后是步骤 5 中的 2 个相邻元素:

numpy.arange(40)

#Output is:
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16,
       17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
       34, 35, 36, 37, 38, 39])

将我的条件应用到这个数组我想得到这个:

array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 14, 15, 20, 21, 26, 27, 32,
       33, 38, 39])

我还没有找到任何解决方案。我认为它应该看起来像这样:

np.arange(40)[0:10, 10:len(np.arange(40)):5]

但这对我不起作用。

您可以尝试对重塑数组进行自定义索引:

n = 40
idx = np.zeros(n//2, dtype=bool)
idx[:5] = True
idx[4:None:3] = True
>>> np.arange(n).reshape(-1,2)[idx]
array([[ 0,  1],
       [ 2,  3],
       [ 4,  5],
       [ 6,  7],
       [ 8,  9],
       [14, 15],
       [20, 21],
       [26, 27],
       [32, 33],
       [38, 39]])
>>> np.arange(n).reshape(-1,2)[idx].ravel()
array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 14, 15, 20, 21, 26, 27, 32,
       33, 38, 39])