In numpy
, some of the operations return in shape (R, 1)
but some return (R,)
. This will make matrix multiplication more tedious since explicit reshape
is required. For example, given a matrix M
, if we want to do numpy.dot(M[:,0], numpy.ones((1, R)))
where R
is the number of rows (of course, the same issue also occurs column-wise). We will get matrices are not aligned
error since M[:,0]
is in shape (R,)
but numpy.ones((1, R))
is in shape (1, R)
.
So my questions are:
What's the difference between shape (R, 1)
and (R,)
. I know literally it's list of numbers and list of lists where all list contains only a number. Just wondering why not design numpy
so that it favors shape (R, 1)
instead of (R,)
for easier matrix multiplication.
Are there better ways for the above example? Without explicitly reshape like this: numpy.dot(M[:,0].reshape(R, 1), numpy.ones((1, R)))