Py学习  »  Python

在Python中从多维数组中删除行

VMEscoli • 5 年前 • 2404 次点击  

我试图删除我的numpy数组中符合特定条件的特定行。

这是一个例子:

a = np.array ([[1,1,0,0,1],
               [0,0,1,1,1],
               [0,1,0,1,1],
               [1,0,1,0,1],
               [0,0,1,0,1],
               [1,0,1,0,0]])

我希望能够删除所有行,其中特定列为零,这个数组可以大很多。 在本例中,如果前两个元素为零,或者后两个元素为零,则将删除行。

它可以是任何组合,不只是第一个或最后一个元素。

这应该是最后的:

a = np.array ([[1,1,0,0,1],
               [0,1,0,1,1],
               [1,0,1,0,1]]) 

例如,如果我尝试:

a[:,0:2] == 0

阅读后:

但他们似乎不适用于我的情况,或者可能我不理解这里的一些东西,因为没有任何工作我的情况。

这给了我所有的行,前两个是零,真,真

array([[False, False],
   [ True,  True],
   [ True, False],
   [False,  True],
   [ True,  True],
   [False,  True]])

最后两列为零,最后一行也应该删除最后我只剩下两排了。

 a[:,3:5] == 0

 array([[ True, False],
       [False, False],
       [False, False],
       [ True, False],
       [ True, False],
       [ True,  True]])

我试着做这样的事情,但是我现在不明白如何告诉它只给我符合条件的行,尽管这只是:

  (a[a[:,0:2]] == 0).all(axis=1)

      array([[ True,  True, False, False, False],
             [False, False,  True,  True, False],
             [False, False, False, False, False],
             [False, False, False, False, False],
             [False, False,  True,  True, False],
             [False, False, False, False, False]])


 (a[((a[:,0])& (a[:,1])) ] == 0).all(axis=1)

这说明一切都是假的

你能给我指点路吗? 谢谢您

再加上一个问题,在这种情况下,它并不总是前2个或后2个如果我的矩阵有35列,可能是第6列到第10列,然后是第20列和第25列。用户将能够决定要删除哪些列。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/48529
 
2404 次点击  
文章 [ 3 ]  |  最新文章 5 年前