Home > Enterprise >  Check if arrays share common elements
Check if arrays share common elements

Time:03-03

I want to check if two arrays share at least one common element. For two arrays of equal size I can do the following:

import numpy as np

A = np.array([0,1,2,3,4])
B = np.array([5,6,7,8,9])

print(np.isin(A,B).any())
False

In my task, however, I want to do this over a 2d array of variable size. Example:

A = np.array([0,1,2,3,4],[3,4,5], [2,4,7], [12,14])
B = np.array([5,6,7,8,9])
function(A,B)

should return:

[False, True, True, False]

How can this task be performed efficiently?

CodePudding user response:

A = np.array([[0,1,2,3,4], [3,4,5], [2,4,7], [12,14]])
B = np.array([5,6,7,8,9])

result = [np.isin(x, B).any() for x in A]

This might be what you're looking for.

CodePudding user response:

Single line solution using only numpy:

import numpy as np

A = np.array([[0,1,2,3,4],[3,4,5], [2,4,7], [12,14]], dtype=object)
B = np.array([5,6,7,8,9])
result = np.intersect1d(np.hstack(A), B)
print(result)

Prints:

[5 7]
  • Related