[Numpy-discussion] strange behavior of variable

Nathaniel Smith njs at pobox.com
Sun Aug 18 05:31:53 EDT 2013


Try:

np.argsort(a)[-n:]

-n
On 18 Aug 2013 10:10, "Sudheer Joseph" <sudheer.joseph at 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 at gmail.com;sudheer.joseph at yahoo.com
> Web- http://oppamthadathil.tripod.com
> ***************************************************************
>
>   ------------------------------
>  *From:* Eric Firing <efiring at hawaii.edu>
> *To:* numpy-discussion at 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 at gmail.com;sudheer.joseph at yahoo.com
> > Web- http://oppamthadathil.tripod.com
> > ***************************************************************
> >
> >
> > _______________________________________________
> > NumPy-Discussion mailing list
> > NumPy-Discussion at scipy.org
> > http://mail.scipy.org/mailman/listinfo/numpy-discussion
> >
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
>
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20130818/4f9ef388/attachment.html>


More information about the NumPy-Discussion mailing list