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]]) Via broadcasting, I know that 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]])=numpy.array([[5,14],[15,28]]) instead of 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? _______________________________________________ NumPy-Discussion mailing list [email protected] http://mail.scipy.org/mailman/listinfo/numpy-discussion
