List and numpy array intersection Mar 7, 2017 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