<p dir="auto">I think the issue is self explanatory when looking at the code below. The second boolean should be False.<br>
Is this intended? If so, should there be some kind of Warning for the user? I couldn't figure why my code wasn't working until I realized that I have to convert my numpy array to a normal list.</p>
<h3 dir="auto">Reproducing code example:</h3>

<div class="highlight highlight-source-python notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="import numpy as np
&gt;&gt;&gt; a = np.array([['a','b','c'], ['d','e','f']])
&gt;&gt;&gt; ['a','b','c'] in a
True
&gt;&gt;&gt; ['c','b','a'] in a
True```


### Numpy/Python version information:
1.18.1 3.6.9 (default, Apr 18 2020, 01:56:04) 
[GCC 8.4.0]"><pre class="notranslate"><span class="pl-k">import</span> <span class="pl-s1">numpy</span> <span class="pl-k">as</span> <span class="pl-s1">np</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> <span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-s1">np</span>.<span class="pl-en">array</span>([[<span class="pl-s">'a'</span>,<span class="pl-s">'b'</span>,<span class="pl-s">'c'</span>], [<span class="pl-s">'d'</span>,<span class="pl-s">'e'</span>,<span class="pl-s">'f'</span>]])
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> [<span class="pl-s">'a'</span>,<span class="pl-s">'b'</span>,<span class="pl-s">'c'</span>] <span class="pl-c1">in</span> <span class="pl-s1">a</span>
<span class="pl-c1">True</span>
<span class="pl-c1">&gt;&gt;</span><span class="pl-c1">&gt;</span> [<span class="pl-s">'c'</span>,<span class="pl-s">'b'</span>,<span class="pl-s">'a'</span>] <span class="pl-c1">in</span> <span class="pl-s1">a</span>
<span class="pl-c1">True</span>`<span class="pl-s">``</span>


<span class="pl-c">### Numpy/Python version information:</span>
<span class="pl-c1">1.18</span>.<span class="pl-c1">1</span> <span class="pl-c1">3.6</span>.<span class="pl-c1">9</span> (<span class="pl-s1">default</span>, <span class="pl-v">Apr</span> <span class="pl-c1">18</span> <span class="pl-c1">2020</span>, <span class="pl-c1">01</span>:<span class="pl-c1">56</span>:<span class="pl-c1">04</span>) 
[<span class="pl-v">GCC</span> <span class="pl-c1">8.4</span><span class="pl-c1">.0</span>]</pre></div>
<p dir="auto">The <code class="notranslate">__contains__</code> method is written to be used for a single array element. However for example in list of list, <code class="notranslate">__contains__</code> does a check more equivalent to subarrays. <code class="notranslate">in</code> must return a single boolean.</p>
<p dir="auto">After <a href="https://mail.python.org/pipermail/numpy-discussion/2013-February/065562.html" rel="nofollow">some discussion on the list</a> (<a href="http://numpy-discussion.10968.n7.nabble.com/What-should-np-ndarray-contains-do-td32964.html" rel="nofollow">nabble</a>), there are three main possibilities:</p>
<ol dir="auto">
<li>The first item must be an element. That means that an array <code class="notranslate">a</code> for <code class="notranslate">a in b</code> will normally be a simple error. (As nathaniel mentioned on the list).</li>
<li>Do a list of list like comparison. I.e. <code class="notranslate">in</code> operates on the first dimension.</li>
<li>Do some kind of subarray matching (there are many different versions of this allowing different things)</li>
</ol>
<p dir="auto">Point 2. seems wrong, since arrays are not list of lists. Point 3. has some merit, it can go as far as allowing things similar to strings <code class="notranslate">'a' in 'cat'</code>, however there are some problems with the details. Point 1. is the simplest and safest solution. One problem with 2. is that for object arrays it can be not quite clear how to interpret for example a tuple/list.</p>
<p dir="auto">At this time (there was not much discussion yet though), it seems that the best solution is to just raise an error (i.e. solution 1.). Finding subarrays is better suited for a dedicated function.</p>