Я пытаюсь удалить определенные строки в моем массиве, который соответствует определенным условиям.
Это пример:
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
После прочтения:
Но онипохоже, не относится к моему делу, или, возможно, я чего-то здесь не понимаю, так как мое дело ничего не работает.
Это дает мне все строки там, первые два случая равны нулю, True, True
array([[False, False],
[ True, True],
[ True, False],
[False, True],
[ True, True],
[False, True]])
и для последних двух столбцов, равных нулю, последняя строка также должна быть удалена.Таким образом, в конце у меня останутся только 2 строки.
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 идвадцать пятый.Пользователь сможет решить, какие столбцы он хочет удалить.