def cartesian_product2(arrays):
    la = len(arrays)
arr = np.empty([len(a) for a in arrays] + [la])
for i, a in enumerate(np.ix_(*arrays)):
    arr[..., (i)] = a
return arr.reshape(-1, la)
Numpy: декартово произведение точек массива x и y в один массив 2D-точек