我试图删除我的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列。用户将能够决定要删除哪些列。