как получить индексы строки, где срез строки содержит одно значение (0) - PullRequest
1 голос
/ 13 марта 2020

С массивом numpy arr = np.array ([[1, 1, 0, 0, 0, 1], [1, 1, 0, 0, 1, 1], [1, 1, 0 , 0, 0, 1]])

Я хотел бы получить индексы всех строк, где срез строки 2: 5 содержит все нули.

В приведенном выше примере он должен вернуть строки 0 и 2.

Я пытался:

zero_indices = np.where (не np.any (arr [:, 2: 5]))

, но это не кажется, не работает.

Я пытаюсь сделать это на большом массиве с несколькими миллионами строк.

1 Ответ

1 голос
/ 13 марта 2020

Попробуйте это

np.nonzero((~arr[:,2:5].astype(bool)).all(1))[0]

Out[133]: array([0, 2], dtype=int32)

Или

np.nonzero((arr[:,2:5] == 0).all(1))[0]

Out[139]: array([0, 2], dtype=int32)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...