Find index element in array python

I have a CSV containing weather data like max and min temperatures, precipitation, longitude and latitude of the weather stations etc. Each category of data is stored in a single column.

I want to find the location of the maximum and minimum temperatures. Finding the max or min is easy: numpy.min[my_temperatures_column]

How can I find the position of where the min or max is located, so I can find the latitude and longitude?

Here is my attempt:

def coldest_location[data]:

coldest_temp= numpy.min[mean_temp]

    for i in mean_temp:
         if mean_temp[i] == -24.6:
            print i

Error: List indices must be int

I saved each of the columns of my CSV into variables, so they are all individual lists.

lat          = [row[0] for row in weather_data]  # latitude
long         = [row[1] for row in weather_data]  # longitude
mean_temp    = [row[2] for row in weather_data]  # mean temperature 

I have resolved the problem as per the suggestion list.index[x]

mean_temp.index[coldest_temp] 

coldest_location=[long[5],lat[5]] 

Unsure if asking a second question within a question is proper, but what if there are two locations with the same minimum temperature? How could I find both and their indices?

James Taylor

5,8987 gold badges48 silver badges68 bronze badges

asked Dec 2, 2014 at 23:13

2

Have you thought about using Python list's .index[value] method? It return the index in the list of where the first instance of the value passed in is found.

answered Dec 2, 2014 at 23:28

AaronAaron

2,2373 gold badges27 silver badges33 bronze badges

3

Without actually seeing your data it is difficult to say how to find location of max and min in your particular case, but in general, you can search for the locations as follows. This is just a simple example below:

In [9]: a=np.array[[5,1,2,3,10,4]]

In [10]: np.where[a == a.min[]]
Out[10]: [array[[1]],]

In [11]: np.where[a == a.max[]]
Out[11]: [array[[4]],]

Alternatively, you can also do as follows:

In [19]: a=np.array[[5,1,2,3,10,4]]

In [20]: a.argmin[]
Out[20]: 1

In [21]: a.argmax[]
Out[21]: 4

James Taylor

5,8987 gold badges48 silver badges68 bronze badges

answered Dec 2, 2014 at 23:24

MarcinMarcin

183k12 gold badges156 silver badges220 bronze badges

1

As Aaron states, you can use .index[value], but because that will throw an exception if value is not present, you should handle that case, even if you're sure it will never happen. A couple options are by checking its presence first, such as:

if value in my_list:
    value_index = my_list.index[value]

or by catching the exception as in:

try:
    value_index = my_list.index[value]
except:
    value_index = -1

You can never go wrong with proper error handling.

James Taylor

5,8987 gold badges48 silver badges68 bronze badges

answered Feb 16, 2016 at 16:15

Gary02127Gary02127

4,7811 gold badge23 silver badges28 bronze badges

3

For your first question, find the position of some value in a list x using index[], like so:

x.index[value]

For your second question, to check for multiple same values you should split your list into chunks and use the same logic from above. They say divide and conquer. It works. Try this:

value = 1 
x = [1,2,3,4,5,6,2,1,4,5,6]

chunk_a = x[:int[len[x]/2]] # get the first half of x 
chunk_b = x[int[len[x]/2]:] # get the rest half of x

print[chunk_a.index[value]]
print[chunk_b.index[value]]

Hope that helps!

answered Apr 11, 2019 at 13:39

karlzafiriskarlzafiris

2,9432 gold badges24 silver badges30 bronze badges

Suppose if the list is a collection of objects like given below:

obj =  [
        {

            "subjectId" : "577a54c09c57916109142248", 
            "evaluableMaterialCount" : 0, 
            "subjectName" : "ASP.net"

        }, 
        {

            "subjectId" : "56645cd63c43a07b61c2c650", 
            "subjectName" : ".NET",         
        }, 
        {

            "subjectId" : "5656a2ec3c43a07b61c2bd83", 
            "subjectName" : "Python",

        }, 
        {

            "subjectId" : "5662add93c43a07b61c2c58c", 
            "subjectName" : "HTML"
        }
    ]

You can use the following method to find the index. Suppose the subjectId is 5662add93c43a07b61c2c58c then to get the index of the object in the list,

subjectId = "5662add93c43a07b61c2c58c"

for i, subjobj in enumerate[obj]:
    if[subjectId == subjobj['subjectId']]:
        print[i]

answered Mar 7, 2019 at 0:00

Haris NpHaris Np

7377 silver badges15 bronze badges

In the NumPy array, you can use where like this:

np.where[npArray == 20]

answered Feb 22, 2021 at 12:26

Ahad aghapourAhad aghapour

2,3731 gold badge22 silver badges33 bronze badges

You should do:

try:
    value_index = my_list.index[value]
except:
    value_index = -1;

answered Sep 26, 2017 at 13:03

1

I would assume your variable mean_temp already has the values loaded in to it and is nX1 dimension [i.e only one row]. Now to achieve what you want, you can :

Change the datatype of your variable:

def coldest_location[data]:

    mean_temp = numpy.mat[mean_temp] #data is now matrix type
    min_index = numpy.nonzero[mean_temp == mean_temp.min[]]  # this returns list of indexes
    print mean_temp[min_index[0],min_index[1]] # printing minimum value, i.e -24.6 in you data i believe

answered Jan 30, 2018 at 14:32

How do you find the index of an element in an array in Python?

The index[] method returns the index of the given element in the list. If the element is not found, a ValueError exception is raised.

How do you find the index of an element in an array?

indexOf[] The indexOf[] method returns the first index at which a given element can be found in the array, or -1 if it is not present.

How do you find indices in Python?

Find the Index of an Item using the List index[] Method in Python.
my_list is the name of the list you are searching through..
. index[] is the search method which takes three parameters. ... .
item is the required parameter. ... .
start is the first optional parameter. ... .
end the second optional parameter..

How do you find the element of index?

To find the position of an element in an array, you use the indexOf[] method. This method returns the index of the first occurrence the element that you want to find, or -1 if the element is not found. The following illustrates the syntax of the indexOf[] method.

Chủ Đề