numpy从数组中删除列,其中列中的第一个元素为0

时间:2018-05-29 14:29:10

标签: python arrays numpy

如果我有一个随机的numpy数组,如下所示:

myArray:

        [0  ,        0      ,  51.78  ,      17],
        [823.    ,   91.31  ,  51.63  ,      13],
        [819.    ,   93.03  ,  51.77  ,      52],
        [776.32  ,   93.85  ,  52.02  ,      34],
        [755.12  ,   92.48  ,  49.955 ,      77],
        [739.01  ,   97.68  ,  50.75  ,      48],
        [760.17  ,   98.26  ,  51.1   ,      12],
        [780.37  ,   98.82  ,  51.52  ,      13],
        [740.34  ,   98.5   ,  50.48  ,      17],
        [768.65  ,  104.86  ,  51.71  ,      97]]

我希望删除第一个元素为0的列,从而生成一个数组:

myArray:

        [51.78  ,      17],
        [51.63  ,      13],
        [51.77  ,      52],
        [52.02  ,      34],
        [49.955 ,      77],
        [50.75  ,      48],
        [51.1   ,      12],
        [1.52   ,      13],
        [50.48  ,      17],
        [51.71  ,      97]]

注意

我知道np.delete,我不确定是否可以在给定任何随机数组的情况下实现此功能。我正在寻找一种方法,如果给出一个在第一行有0的随机数组,我可以对任何数组实现相同的功能,而不仅仅是上面给出的例子。

任何提示都将不胜感激!

1 个答案:

答案 0 :(得分:3)

使用Boolean Indexing,条件为arr[0] != 0

arr[:, arr[0] != 0]

#array([[ 51.78 ,  17.   ],
#       [ 51.63 ,  13.   ],
#       [ 51.77 ,  52.   ],
#       [ 52.02 ,  34.   ],
#       [ 49.955,  77.   ],
#       [ 50.75 ,  48.   ],
#       [ 51.1  ,  12.   ],
#       [ 51.52 ,  13.   ],
#       [ 50.48 ,  17.   ],
#       [ 51.71 ,  97.   ]])