Thanks for the quick response. Ah, I see. There is a difference between A[:,:1] and A[:,0]. The former returns an Mx1 2D array whereas the latter returns an M element 1D array. I was using A[:,0] in the code but A[:,:1] in the example.
On Sun, Nov 25, 2012 at 8:35 PM, Warren Weckesser < warren.weckes...@gmail.com> wrote: > > > On Sun, Nov 25, 2012 at 8:24 PM, Tom Bennett > <tom.benn...@mail.zyzhu.net>wrote: > >> Hi, >> >> I am trying to extract n columns from an 2D array and then operate on the >> extracted columns. Below is the code: >> >> A is an MxN 2D array. >> >> u = A[:,:n] #extract the first n columns from A >> >> B = np.dot(u, u.T) #take outer product. >> >> This code works when n>1. However, when n=1, u becomes an 1D array >> instead of an Mx1 2D array and the code breaks down. >> >> I wonder if there is any way to keep u=A[:,:n] an Mxn array no matter >> what value n takes. I do not want to use matrix because array is more >> convenient in other places. >> >> > Tom, > > Your example works for me: > > In [1]: np.__version__ > Out[1]: '1.6.2' > > In [2]: A = arange(15).reshape(3,5) > > In [3]: A > Out[3]: > array([[ 0, 1, 2, 3, 4], > [ 5, 6, 7, 8, 9], > [10, 11, 12, 13, 14]]) > > In [4]: u = A[:,:1] > > In [5]: u > Out[5]: > array([[ 0], > [ 5], > [10]]) > > In [6]: B = np.dot(u, u.T) > > In [7]: B > Out[7]: > array([[ 0, 0, 0], > [ 0, 25, 50], > [ 0, 50, 100]]) > > > > Warren > > > >> Thanks, >> Tom >> >> >> >> _______________________________________________ >> NumPy-Discussion mailing list >> NumPy-Discussion@scipy.org >> http://mail.scipy.org/mailman/listinfo/numpy-discussion >> >> > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > >
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion