Why does applying an objects matrix to a location fail?
When applying an objects transformation matrix to a vertex, you need to multiply:

Matrix * Vector


However your example does:

Vector * Matrix


This behavior matches numpy and other math libraries.