[Numpy-discussion] Find the N maximum values and corresponding indexes in an array

Howard Chong hgchong at berkeley.edu
Wed Dec 2 18:55:00 EST 2009


I will need to find the N largest numbers and corresponding indexes in an
1-D array.

If N==1, I can easily do:

def myFindMaxC(myList):
    """implement finding maximum value with using numpy.array()"""
    myA=np.array(myList)
    maxIndex=myA.argmax()
    maxVal=myA[maxIndex]
    return [maxIndex, maxVal]

For me, I'm likely going to be running this with N==7.

So, I think I have to iterate over the array. Doing it with non-numpy
procedures is **quite slow**. Here, I run it with N==1 without using any
numpy procedures.

def myFindMaxA(myList):
    """implement finding maximum value with for loop iteration"""
    maxIndex=0
    maxVal=myList[0]
    for index, item in enumerate(myList):
        if item[0]>maxVal:
            maxVal=item[0]
            maxIndex=index
    return [maxIndex, maxVal]



My question is: how can I make the latter version run faster? I think the
answer is that I have to do the iteration in C.

If that's the case, can anyone point me to where np.array.argmax() is
implemented so I can write np.array.argmaxN() extend it to the N largest
values?

Thanks!

-- 
Howard Chong
Dept. of Agricultural and Resource Economics and Energy Institute @ Haas
Business School
UC Berkeley
hgchong at berkeley.edu
Cell: 510-333-0539
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20091202/1d121a34/attachment.html>


More information about the NumPy-Discussion mailing list