Итерация по 2d массиву дает: ValueError: Значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any () или a.all () - PullRequest
0 голосов
/ 12 февраля 2020

Итак, у меня есть функция, выполняющая итерацию многомерного массива numpy и формирующая функцию для каждого элемента массива, функция возвращает либо True, либо False, и мне нужно отфильтровать все элементы, которые возвращают false:

def unhappy_grid(grid, empty_value=-1, threshold=3):
    for y in grid:
        for x in y:
            if happy(grid, y, x, threshold).any() == False:
                print('test')
    return

Happy - это функция, которая возвращает true или false, но даже после того, как я использую .any (), она все равно выдает мне эту ошибку? Я не знаю, что я делаю не так, может кто-нибудь объяснить, как это исправить?

1 Ответ

2 голосов
/ 12 февраля 2020

Вы не предоставили сообщение об ошибке, но;

Логические (True или False) не имеют метода .any(). Если happy() возвращает логическое значение, вам следует проверить, является ли это True или False.

Python также имеет встроенную функцию с именем filter(function, iterable), которую можно использовать здесь.

Редактировать:

Наблюдать за ошибкой в ​​названии вопроса ... Мой плохой ...

Ошибка, очевидно, возникает при попытке оценить numpy массивов. Этот ответ может ответить на ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...