<div dir="ltr"><span style="font-size:12.8px">I started an enhancement request in the Github bug tracker at </span><a href="https://github.com/numpy/numpy/issues/8331" target="_blank" style="font-size:12.8px">https://github.com/numpy/numpy<wbr>/issues/8331</a><span style="font-size:12.8px"> , but Jaime Frio recommended I bring it to the mailing list.</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">`in1d` takes two arrays, `ar1` and `ar2`, and returns a 1d array with the same number of elements as `ar1`. The logical extension would be a function that does the same thing but returns a (possibly multi-dimensional) array of the same shape as `ar1`. The code already has a comment suggesting this could be done (see </span><a href="https://github.com/numpy/numpy/blob/master/numpy/lib/arraysetops.py#L444" target="_blank" style="font-size:12.8px">https://github.com/numpy/numpy<wbr>/blob/master/numpy/lib/arrayse<wbr>tops.py#L444</a><span style="font-size:12.8px"> ). </span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">I agree that changing the behavior of the existing function isn't an option, since it would break backwards compatability. I'm not sure adding an option keep_shape is good, since the name of the function ("1d") wouldn't match what it does (returns an array that might not be 1d). I think a new function is the way to go. This would be it, more or less:</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">def items_in(ar1, ar2, **kwargs):</span><br style="font-size:12.8px"><span style="font-size:12.8px">  return np.in1d(ar1, ar2, **kwargs).reshape(ar1.shape)</span><br style="font-size:12.8px"><br style="font-size:12.8px"><span style="font-size:12.8px">Questions I have are:</span><br style="font-size:12.8px"><span style="font-size:12.8px">* Function name? I was thinking something like `items_in` or `item_in`: the function returns whether each item in `ar1` is in `ar2`. Is "item" or "element" the right term here?</span><br style="font-size:12.8px"><span style="font-size:12.8px">* Are there any other changes that need to happen in arraysetops.py? Or other files? I ask this because although the file says "Set operations for 1D numeric arrays" right at the top, it's growing increasingly not 1D: `unique` recently changed to operate on multidimensional arrays, and I'm proposing a multidimensional version of `in1d`. `ediff1d` could probably be tweaked into a version that operates along an axis the same way unique does now, fwiw. Mostly I want to know if I should put my code changes in this file or somewhere else.</span><br style="font-size:12.8px"><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">Thanks,</div><div style="font-size:12.8px"><br></div><div style="font-size:12.8px">-brsr</div></div>