b = np.array([4, 5])

def f(i, j):
    return i + j
result = np.array([[f(i, j) for j in b] for i in a])
print(result)
Причуда Numpy: применить функцию ко всем парам двух 1D-массивов, чтобы получить один 2D-массив