I can slice but I can't assign

Keith Goodman kwgoodman at gmail.com
Sun Nov 12 14:18:51 CST 2006


On 11/12/06, Keith Goodman <kwgoodman at gmail.com> wrote:
> >> x = M.matrix([[1, 2], [3, 4]])
> >> x
> matrix([[1, 2],
>         [3, 4]])
>
> >> y = M.matrix([[5], [6]])
> >> y
> matrix([[5],
>         [6]])
>
> >> idx = M.where(x[:,0].A < 100)[0]
> >> idx
> array([0, 1])
>
>
> >> x[idx,0]   # <---- This works
> matrix([[1],
>         [3]])
>
> >> x[idx,0] = y    # <---- But this doesn't work. How can I make it work?
>
> ValueError: array is not broadcastable to correct shape

Awkward, but it works:

>> idx = M.asmatrix(idx)
>> idx
matrix([[0, 1]])
>> idx = idx.T
>> idx
matrix([[0],
        [1]])

>> x[idx,0] = y

But it does seem odd to me that the array idx in the original example
works for a slice but for not an assignment.

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642




More information about the Numpy-discussion mailing list