This function's main usefulness is in the case of matrix multiplication. I can't think of any good uses for elementary() without matrix multiplication. I've added a note to in the documentation clarifying that. Also the examples I chose for my documentation makes clear what happens in A * B when one of A, B is an array and the other a matrix, but I take your point, that it can be confusing. Until PEP 465 gets accepted, is there a better way to do matrix multiplication than np.matrix? Should I write documentation assuming that PEP 465 has already been incorporated?