I have 2 numpy arrays a and b as below:
a = np.random.randint(0,10,(3,2)) Out[124]: array([[0, 2], [6, 8], [0, 4]]) b = np.random.randint(0,10
Just use np.newaxis (which is just an alias for None) to add a singleton dimension to a, and let broadcasting do the rest:
np.newaxis
In [45]: a[:, np.newaxis] - b Out[45]: array([[[-5, -7], [-2, -2]], [[ 1, -1], [ 4, 4]], [[-5, -5], [-2, 0]]])