# [Numpy-discussion] Slicing, sum, etc. reduces rank of array?

George gburdell1@gmail....
Fri Sep 24 20:56:25 CDT 2010

```I couldn't find an answer to my newbie question, so I'm posting it here.

I have:

a=numpy.array([[1,2],[3,4]])
b=numpy.array([[5,6],[7,8]])

a*[[5],[7]]=numpy.array([[5,10],[21,28]])

Being a recent convert from MATLAB, I expected the same result from a*b[:,0],
assuming b[:,0] would be the column vector [[5],[7]].

Unfortunately, I was wrong. b[:,0] is apparently a 1-rank array of shape (2,).
This causes a*b[:,0] to evaluate as
a*numpy.array([[5],[7]])

To get the result I desire, the only way I've been able to come up with is

a*b[:,0].reshape(2,1)

to "coerce" b[:,0] into a column vector. Is there an easier way to do this,
without having to do the reshape?

I find similar things happen when I use other operations (e.g. "sum") that also
seem to reduce the array rank.

For example, I would expect numpy.sum(b,1) to also be a "column vector," but it
also evaluates to a 1-rank array [11, 15] with shape (2,)

Any thoughts, suggestions?

```