Ternick
@Ternick

Как решить ValueError: The truth value...?

Есть большой массив, при попытке его перебрать получаю
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()


КОД:

cleared_img_data = array(["+" if rgb != bg_color else "." for rgb in img_data])


Насколько я понимаю, numpy намекает, что есть какая-то функция которая делает подобную вещь быстрее ?

Особо никогда не пользовался numpy и поэтому особо ничего и не знаю, возможно это даже не последний вопрос)
  • Вопрос задан
  • 40 просмотров
Решения вопроса 1
@Vindicar
numpy намекает, что выражение rgb != bg_color вернёт не логическое значение, а массив логических значений - результатов сравнения каждого элемента. Иными словами,
print(numpy.array([1, 2, 3]) != numpy.array([1, 2, 4])) выведет [False, False, True]
Как следствие, непонятно, считать ли такой массив истинным или ложным если в нём несколько значений и они разные.
Предпреждение подсказывает и как это поправить.
Если тебе нужно любое несовпадение, то пишешь (rgb != bg_color).any().
Если нужно, чтобы все три канала цвета были разными, то (rgb != bg_color).all().

Но если честно, cleared_img_data - какой-то странный массив.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы