Python index value in array

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

Python index value in array

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

184k12 gold badges157 silver badges221 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

Python index value in array

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

Python index value in array

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

Python index value in array

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;

Python index value in array

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

Python index value in array

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

Find index of a value in 1D Numpy array.
# Get the index of elements with value 15..
result = np. where(arr == 15).
print('Tuple of arrays returned : ', result).
print("Elements with value 15 exists at following indices", result[0], sep='\n').

How do you find the index of a value in an array?

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.

Can you use index of in an array?

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.

Are Python arrays 0 or 1 indexed?

python lists are 0-indexed. So the first element is 0, second is 1, so on. So if the there are n elements in a list, the last element is n-1. Remember this!