[Numpy-discussion] Selecting columns of a matrix

Bill Baxter wbaxter at gmail.com
Tue Jun 20 22:33:43 CDT 2006


I think that one's on the NumPy for Matlab users, no?
http://www.scipy.org/NumPy_for_Matlab_Users

>>> import numpy as num
>>> a = num.arange (10).reshape(2,5)
>>> a
array([[0, 1, 2, 3, 4],
       [5, 6, 7, 8, 9]])
>>> v = num.rand(5)
>>> v
array([ 0.10934855,  0.55719644,  0.7044047 ,  0.19250088,  0.94636972])
>>> num.where(v>0.5)
(array([1, 2, 4]),)
>>> a[:,num.where(v>0.5)]
array([[[1, 2, 4]],

       [[6, 7, 9]]])

Seems it grows an extra set of brackets for some reason.  Squeeze will get
rid of them.

>>> a[:,num.where(v>0.5)].squeeze()
array([[1, 2, 4],
       [6, 7, 9]])

Not sure why the squeeze is needed.  Maybe there's a better way.

--bb


On 6/21/06, Keith Goodman <kwgoodman at gmail.com> wrote:
>
> I have a matrix M and a vector (n by 1 matrix) V. I want to form a new
> matrix that contains the columns of M for which V > 0.
>
> One way to do that in Octave is M(:, find(V > 0)). How is it done in
> numpy?
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20060621/4a5bcd66/attachment.html 


More information about the Numpy-discussion mailing list