切片numpy数组,每隔n个元素

时间:2020-07-07 11:08:03

标签: python arrays numpy slice

我有一个形状为 24576x25 的numpy数组,我想从中提取3个数组。第一个数组包含每个1st,4th,7th,10th,...元素的位置 而第二个数组包含2nd,5,8,11th,...元素,而第三个数组包含3rd,6,9,12th,... 输出数组的大小为 8192x25 。 我在 MATLAB

中执行以下操作
c = reshape(a,1,[]);
x = c(:,1:3:end);
y = c(:,2:3:end);
z = c(:,3:3:end);

我已经在 python 中尝试过a[:,0::3],但是只有当我的形状数组可以被3整除时,该方法才能起作用。

X,Y = np.mgrid[0:24576:1, 0:25:1]
a = X[:,::,3]
b = X[:,1::3]
c = X[:,2::3]

也不起作用。我需要a,b,c.shape = 8192x25

2 个答案:

答案 0 :(得分:0)

import numpy as np
a = np.arange(24576*25).reshape((24576,25))
a[::3]

a[::3].shape给您(8192, 25)

答案 1 :(得分:0)

对原始尝试进行简单的调整即可产生所需的结果:

X,Y = np.mgrid[0:24576:1, 0:25:1]
a = X[0::3,:]
b = X[1::3,:]
c = X[2::3,:]