分割二维数组和跳过索引的有效方法;重复提取小片段

问题描述 投票:0回答:1

我有一个二维numpy数组D,其维数(1000,800)。我想从数组中提取长度为20的小段:

假设D [0] [:]为[1,2,3,4,5,6,...],我想要长度为3的线段,我希望前三个数字(1、2、3 ),然后跳过一些索引(例如60),提取3,跳过60,依此类推。

[我知道我可以执行D [:,start:end:step],但是是否有D [:,start:end:step *:skip *]之类的东西?

理想情况下,我想要类似的东西:

D = np.random.random((1000,800))
parts = D[:,0:20:1:skip_n_indices_and_repeat]

感谢您的宝贵时间和答复。如果您有一个简单的解决方案或其他解决方案,请提出建议。谢谢。

python arrays numpy slice
1个回答
1
投票

无需使用任何特殊方法,就可以生成所需的索引掩码,如下所示:

D = np.random.random((1000,800))
step = 3
skip = 60
idx = np.arange(800)
needed_indexes = idx%(skip+step)<step

然后您可以以标准方式返回阵列的副本:

>>> E = D[:,needed_indexes]
>>> E.shape
(1000, 39)
© www.soinside.com 2019 - 2024. All rights reserved.