如何从数组

时间:2016-06-24 14:57:45

标签: arrays python-3.x numpy

这是(3x9)数组:

    [[ 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]]

我想这样(3x3):

    [[ 2  7  8]
     [11 16 17]
     [20 25 26]]       
我写了一些代码。 有没有更好的方法呢?

    AB = x[:,2:] #Removes the first 2 columns
    print(AB)
    C = np.delete(AB, 1, 1)
    print(C)
    D = np.delete(C, 1, 1)
    print(D)
    E = np.delete(D, 1, 1)
    print(E)
    F = np.delete(E, 1, 1)
    print(F)

2 个答案:

答案 0 :(得分:2)

    index = [0, 1, 3, 4, 5, 6]     #Set the index of columns I want to remove
    new_a = np.delete(x, index, 1) #x=name of array
                                   #index=calls the index array
                                   #1=is the axis. So the columns
    print(new_a)                   #Print desired array

答案 1 :(得分:1)

您可以使用bulkzip在普通python中执行enumerate删除:

cols_to_del = [0, 1, 3, 4, 5, 6]
AB_trans = [v for i, v in enumerate(zip(*AB)) if i not in cols_to_del]
AB = np.array(list(zip(*AB_trans)))
print(AB)
# array([[ 2,  7,  8],
#        [11, 16, 17],
#        [20, 25, 26]])

想法是转置数组,并删除列(现在显示为行)。