Почему эта строка вызывает логическую ошибку? - PullRequest
0 голосов
/ 28 мая 2020
len([True for i in a if any([any(j == b[:, 0]) for j in i])])

Это моя строка кода. a - это многомерный список, а b - nd.array. Когда я запускаю его, он возвращает эту ошибку:

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Хотя я использовал any() во всех необходимых местах. Где моя ошибка?

Изменить: Значения для списков:

  1. a = [[[[0, 0], [0, 0]]]]
  2. b = np.array([[[[0, 0], [0, 0]], 0]])

1 Ответ

2 голосов
/ 28 мая 2020

Проблема возникает из-за:

any(j == b[:, 0])

вместо этого используйте:

(j == b[:, 0]).any()

. То же самое для внешнего any(). Обратите внимание, что any() может принимать итерацию, которая np_array.any() является функцией из numpy.

...