[Numpy-discussion] Smart way to do this?

santhu kumar mesanthu@gmail....
Fri Feb 22 20:35:51 CST 2013


Hi all,

I dont want to run a loop for this but it should be possible using numpy
"smart" ways.

a = np.ones(30)
idx = np.array([2,3,2]) # there is a duplicate index of 2
a += 2

>>>a
array([ 1.,  1.,  3.,  3.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.])


But if we do this :
for i in range(idx.shape[0]):
       a[idx[i]] += 2

>>> a
array([ 1.,  1.,  5.,  3.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,  1.,
        1.,  1.,  1.,  1.])

How to achieve the second result without looping??
Thanks
Santhosh
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/numpy-discussion/attachments/20130222/74f63959/attachment.html 


More information about the NumPy-Discussion mailing list