np.searchSorted over 2D array

Peter Otten __peter__ at web.de
Wed Dec 9 11:36:31 EST 2015


Heli wrote:

[Please don't open a new thread for the same problem] 

> I need to check whether two 2d numpy arrays have intersections and if so I
> will need to have the cell indices of the intersection.
> 
> By intersection, I exactly mean the intersection definition used in set
> theory.
> 
> I will give an example of what I need to do:
> 
> a=[[0,1,2],[3,4,5],[6,7,8]]
> b=[[0,1,2],[3,4,5]]
> 
> I would like to check whether b is subset of a and then get the indices in
> a where b matches.
> 
> cellindices=[[True,True,True],[True,True,True],[False,False,False]]
> 
> What is the best way to do this in numpy?

Providing an example is an improvement over your previous post, but to me 
it's still not clear what you want.

>>> functools.reduce(lambda x, y: x | y, (a == i for i in b.flatten()))
array([[ True,  True,  True],
       [ True,  True,  True],
       [False, False, False]], dtype=bool)

produces the desired result for the example input, but how do you want to 
handle repeating numbers as in 

>>> a = numpy.array([[0,1,2],[3,4,5],[3, 2, 1]])
>>> functools.reduce(lambda x, y: x | y, (a == i for i in b.flatten()))
array([[ True,  True,  True],
       [ True,  True,  True],
       [ True,  True,  True]], dtype=bool)

?

Try to be clear about your requirement, describe it in english and provide a 
bit of context. You might even write a solution that doesn't use numpy and 
ask for help in translating it.

At the very least we need more/better examples.




More information about the Python-list mailing list