В зависимости от пользовательского ввода, у меня есть разные условия для проверки в моем массиве. Предположим, что существует максимум 3 условия:
a должно быть 1
b должно быть положительным
c должно быть True
Только в тех случаях, когда эти три условия оцениваются как True, массив должен обрабатываться:
myArr = np.random.rand(5)
a = np.array([1, 1, 1, 0, 1])
b = np.array([4, 3, -8, 7, 6])
c = np.array([True, False, True, True, True])
valid_indices = np.where((a == 1) & (b > 0) & (c == True))
>> valid_indices
>> Out: (array([0, 4], dtype=int64),)
Не зная заранее, какое из этих условий будет предоставлено, я должен был бы проверить так:
if a and not b and not c:
valid_indices = np.where(a == 1)
elif a and not b and c:
valid_indices = np.where((a == 1) & (c == True))
elif a and b and not c:
valid_indices = np.where((a == 1) & (b > 0))
elif not a and b and c:
valid_indices = np.where((b > 0) & (c == True))
elif not a and not b and c:
valid_indices = np.where(c == True)
elif not a and b and not c:
valid_indices = np.where((b > 0))
Не дай Бог, я добавлю еще одно условие. Вещи становятся действительно грязными. Я ищу способ динамического добавления к условию, как если бы это была обычная строка или средство форматирования. Это возможно?