Merging numpy arrays:

``````def intersect_arrays(x_np_array, y_np_array):
from functools import reduce
intersection = reduce(np.intersect1d, x_np_array)
return_list = [intersection]
for x, y in zip(x_np_array, y_np_array):
return_list.append(np.array([y[np.where(i==x)[0]][0] for i in intersection]))
return return_list
``````

Example:

``````a = np.array([1, 2, 3])
aa = np.array([11, 22, 33])

b = np.array([1, 3, 7, 5])
bb = np.array([2, 6, 14, 10])

c = np.array([3, 9, 8, 7, 1])
cc = np.array([3, 1, 1, 1, 1])

intersect_arrays([a, b, c], [aa, bb, cc])
``````

[array([1, 3]), array([11, 33]), array([2, 6]), array([1, 3])]

Merging lists:

``````def intersect_list(list_x1, list_y1, list_x2, list_y2):
try: new_list_x = sorted(set(list_x1) & set(list_x2))
except: new_list_x = list(set(list_x1) & set(list_x2))
new_list_y1 = []
new_list_y2 = []
for x in new_list_x:
new_list_y1.append(list_y1[list_x1.index(x)])
new_list_y2.append(list_y2[list_x2.index(x)])
return new_list_x, new_list_y1, new_list_y2
``````