我有一个二维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]
感谢您的宝贵时间和答复。如果您有一个简单的解决方案或其他解决方案,请提出建议。谢谢。
无需使用任何特殊方法,就可以生成所需的索引掩码,如下所示:
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)