How to remove a column in a numpy array?

后端 未结 3 2088
南方客
南方客 2021-02-19 15:47

Imagine we have a 5x4 matrix. We need to remove only the first dimension. How can we do it with numpy?

array([[  0.,   1.,   2.,   3.],
              


        
相关标签:
3条回答
  • 2021-02-19 16:15

    The correct way to use delete is to specify index and dimension, eg. remove the 1st (0) column (dimension 1):

    In [215]: np.delete(np.arange(20).reshape(5,4),0,1)
    Out[215]: 
    array([[ 1,  2,  3],
           [ 5,  6,  7],
           [ 9, 10, 11],
           [13, 14, 15],
           [17, 18, 19]])
    

    other expressions that work:

    np.arange(20).reshape(5,4)[:,1:]
    np.arange(20).reshape(5,4)[:,[1,2,3]]
    np.arange(20).reshape(5,4)[:,np.array([False,True,True,True])]
    
    0 讨论(0)
  • 2021-02-19 16:27

    You don't need the second reshape.

    matrix=np.delete(matrix,0,1)
    
    0 讨论(0)
  • 2021-02-19 16:33

    If you want to remove a column from a 2D Numpy array you can specify the columns like this

    to keep all rows and to get rid of column 0 (or start at column 1 through the end)

    a[:,1:]
    

    another way you can specify the columns you want to keep ( and change the order if you wish) This keeps all rows and only uses columns 0,2,3

    a[:,[0,2,3]]
    

    The documentation on this can be found here

    And if you want something which specifically removes columns you can do something like this:

    idxs = list.range(4)
    idxs.pop(2) #this removes elements from the list
    a[:, idxs]
    

    and @hpaulj brought up numpy.delete()

    This would be how to return a view of 'a' with 2 columns removed (0 and 2) along axis=1.

    np.delete(a,[0,2],1)
    

    This doesn't actually remove the items from 'a', it's return value is a new numpy array.

    0 讨论(0)
提交回复
热议问题