python – Numpy – 删除负值的数据行

我正在从AUTO数字延续包中获取输出,并且需要过滤掉具有负值变量的结果,因为它们是非物理的.所以,如果我有,例如:

>>>   a = np.array([[0,1,2,3,4],[-1,-0.5,0,0.5,1],[-3,-4,-5,0.1,0.2]])

我想留下:

>>> b
array([[ 3. ,  4. ],
       [ 0.5,  1. ],
       [ 0.1,  0.2]])

但当我尝试numpy.where得到:

>>> b = a[:,(np.where(a[1]>=0) and np.where(a[2]>=0))]
>>> b
array([[[ 3. ,  4. ]],

       [[ 0.5,  1. ]],

       [[ 0.1,  0.2]]])
>>> b.shape
(3, 1, 2)

也就是说,它会向阵列添加另一个不需要的轴.我究竟做错了什么?

最佳答案 假设您要做的就是删除具有一个或多个负值的列,您可以这样做:

a = np.array([[0,1,2,3,4],[-1,-0.5,0,0.5,1],[-3,-4,-5,0.1,0.2]])
b = a[:,a.min(axis=0)>=0]
点赞