2013-10-21 23 views
2

我有一个9列的numpy数组。我需要能够创建子集的列,然后生成一个新的数组,只是子集(例如合并0:3和6:8)。获取单个子集很容易,但我坚持创建一个新的数组。数组的复杂子集和合并Python

Cmatrix =np.array([ (1, 1, 0, 1,  0, 0, 1, 0, 1),\ 
        (1, -1, 0, 1,  0, 0, -1, 0, -1),\ 
        (1, 0, 1, 0,  0, 1, 1, 0, 1),\ 
        (1, 0, 1, 0,  0, 1, -1, 0, -1),\ 
        (1, 0, 0.5, 0,  0, 0.25, 0, 1, 1),\ 
        (1, 0, 0.5, 0,  0, 0.25, 0, 1, -1),\ 
        (1, 0.5, 0.5, 0.25, 0.25, 0.25, 1, 0, 1),\ 
        (1, 0.5, 0.5, 0.25, 0.25, 0.25, 1, 0, 1),\ 
        (1, -0.5, 0.5, 0.25, -0.25, 0.25, -1, 0, -1),\ 
        (1, -0.5, 0.5, 0.25, -0.25, 0.25, -1, 0, -1)]) 

回答

3
Cmatrix =np.array([ (1, 1, 0, 1,  0, 0, 1, 0, 1),\ 
        (1, -1, 0, 1,  0, 0, -1, 0, -1),\ 
        (1, 0, 1, 0,  0, 1, 1, 0, 1),\ 
        (1, 0, 1, 0,  0, 1, -1, 0, -1),\ 
        (1, 0, 0.5, 0,  0, 0.25, 0, 1, 1),\ 
        (1, 0, 0.5, 0,  0, 0.25, 0, 1, -1),\ 
        (1, 0.5, 0.5, 0.25, 0.25, 0.25, 1, 0, 1),\ 
        (1, 0.5, 0.5, 0.25, 0.25, 0.25, 1, 0, 1),\ 
        (1, -0.5, 0.5, 0.25, -0.25, 0.25, -1, 0, -1),\ 
        (1, -0.5, 0.5, 0.25, -0.25, 0.25, -1, 0, -1)] 
interesting_cols = range(3) + range(6,8) 
new_matrix = Cmatrix[:,interesting_cols] 
3
np.hstack((Cmatrix[:, :3], Cmatrix[:, 6:8])) 
+0

Joran比斯利的回答是更好的,我认为。如果你有不同来源的矩阵粘合在一起,那么'hstack,vstack,dstack'是最好的。 – YXD