I think this is what you get (in this example, $M + v$). If you try another combination (like $M + u$ in the example), you'll see what happens. Let $M = (m_1, m_2, m_3)^T$. Then it returns $$M + v := (m_1 + v, m_2 + v, m_3 + v)^T$$ somehow. So it's a problem of Numpy and I think Stack Overflow is more appropriate place to ask if you want to know why this happens.
This is a case of less conventional notation used in deep learning: We allow the addition of a matrix and a vector, yielding another matrix: $$C = A+b$$, where $$C_{i,j}$$ is $$A_{i,j} + b_j$$. See: http://www.deeplearningbook.org/contents/linear_algebra.html (page 32)