繁体   English   中英

在一维 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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM