Numpy: нужна рука, чтобы понять, что происходит с оператором «in»

Я был бы признателен, если бы кто-нибудь помог мне с этим (и объяснил, что происходит).

Это работает:

>>> from numpy import array
>>> a = array((2, 1))
>>> b = array((3, 3))
>>> l = [a, b]
>>> a in l
True

Но это не так:

>>> c = array((2, 1))
>>> c in l
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Поведение, которое я хотел бы воспроизвести:

>>> x = (2, 1)
>>> y = (3, 3)
>>> l2 = [x, y]
>>> z = (2, 1)
>>> z in l2
True

Обратите внимание, что то, что указано выше, также работает с изменяемыми объектами:

>>> x = [2, 1]
>>> y = [3, 3]
>>> l2 = [x, y]
>>> z = [2, 1]
>>> z in l2
True

Конечно, зная, что:

>>> (a < b).all()
True

Я попробовал (и потерпел неудачу):

>>> (c in l).all()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
6
задан ROMANIA_engineer 13 January 2018 в 08:58
поделиться