Difference between numpy.array shape (R, 1) and (R,)
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 designnumpy
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)))