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
     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.in...@gmail.com;sudheer.jos...@yahoo.com
Web- http://oppamthadathil.tripod.com
***************************************************************
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to