Tank you,
It worked fine,
with best regards,
Sudheer

From: Nathaniel Smith <njs@pobox.com>
To: Discussion of Numerical Python <numpy-discussion@scipy.org>
Sent: Sunday, 18 August 2013 3:01 PM
Subject: Re: [Numpy-discussion] strange behavior of variable

Try:
np.argsort(a)[-n:]
-n
On 18 Aug 2013 10:10, "Sudheer Joseph" <sudheer.joseph@yahoo.com> wrote:

 

However, I was looking for the indices of the biggest 3 numbers which can be used to find corresponding values in another vector, which made me to write the function. Is there a smarter way for getting indices?
with best regards,
Sudheer
Thanks a lot Eric,
                    Here comes the smartness of python!!, I am just climbing the bottom steps...
with best regards,
Sudheer

 
***************************************************************
Sudheer Joseph
Indian National Centre for Ocean Information Services
Ministry of Earth Sciences, Govt. of India
POST BOX NO: 21, IDA Jeedeemetla P.O.
Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55
Tel:+91-40-23886047(O),Fax:+91-40-23895011(O),
Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile)
E-mail:sjo.India@gmail.com;sudheer.joseph@yahoo.com
Web- http://oppamthadathil.tripod.com
***************************************************************


From: Eric Firing <efiring@hawaii.edu>
To: numpy-discussion@scipy.org
Sent: Sunday, 18 August 2013 1:57 PM
Subject: Re: [Numpy-discussion] strange behavior of variable

On 2013/08/17 9:49 PM, Sudheer Joseph wrote:
> Hi,
>          I have defined a small function to find the n maximum values
> of an array as below. With in it I assign the input array to a second
> array and temporarily make the array location after first iteration as
> nan. I expected this temporary change to be limited to the second
> variable. However my initial variable gets modified. Can any one through
> some light to what is happening here?. In case of matlab this logic works.
>
> ######
> #FUNCTION maxn
> ######
> import numpy as np
> def max_n(a,n):
>      b=a

This is not making "b" a copy of "a", it is simply making it an alias
for it.  To make it a copy you could use "b = a[:]", or "b = a.copy()"

It sounds like you don't really need a function, however.  Try this:

# test data:
a = np.random.randn(10)
n = 2

# One-line solution:
biggest_n = np.sort(a)[-n:]

print a
print biggest_n

If you want them ordered from largest to smallest, just reverse the list:

biggest_n = biggest_n[::-1]

Eric


>      result=[]
>      for i in np.arange(1,n+1):
>          mxidx=np.where(b==max(b))
>          result.append(mxidx)
>          b[mxidx]=np.nan
>      result=np.ravel(result)
>      return(result)
>
> ### TEST
> In [8]: x=np.arange(float(0),10)
>
> In [9]: max
> max    max_n
>
> In [9]: max_n(x,2)
> Out[9]: array([9, 8])
>
> In [10]: x
> Out[10]: array([  0.,  1.,  2.,  3.,  4.,  5.,  6.,  7.,  nan,  nan])
> ***************************************************************
> Sudheer Joseph
> Indian National Centre for Ocean Information Services
> Ministry of Earth Sciences, Govt. of India
> POST BOX NO: 21, IDA Jeedeemetla P.O.
> Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55
> Tel:+91-40-23886047(O),Fax:+91-40-23895011(O),
> Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile)
> E-mail:sjo.India@gmail.com;sudheer.joseph@yahoo.com
> Web- http://oppamthadathil.tripod.com
> ***************************************************************
>
>
> _______________________________________________
> 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



_______________________________________________
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