def out_loop():
    out = np.empty((arr1.size, arr2.size))
for i in range(arr1.size):
    np.multiply(arr1[i], arr2, out=out[i].reshape((1, arr2.size)))
out[i] *= 2
Почему циклы for быстрее, чем numpy для умножения 2D-массивов