find a minimum value in an array of floats
Asked Answered
A

4

35

How would one go about finding the minimum value in an array of 100 floats in python? I have tried minindex=darr.argmin() and print darr[minindex] with import numpy (darr is the name of the array)

but I get: minindex=darr.argmin()

AttributeError: 'list' object has no attribute 'argmin'

what might be the problem? Is there a better alternative?

Anora answered 17/8, 2010 at 3:2 Comment(1)
both answerers thank you, but not using numpy at all seemed better.Anora
R
85

Python has a min() built-in function:

>>> darr = [1, 3.14159, 1e100, -2.71828]
>>> min(darr)
-2.71828
Rangefinder answered 17/8, 2010 at 3:3 Comment(1)
If your (numpy) array is more than one dimensional then you must use darr.min(), rather than min(darr).Devindevina
E
25

If you want to use numpy, you must define darr to be a numpy array, not a list:

import numpy as np
darr = np.array([1, 3.14159, 1e100, -2.71828])
print(darr.min())

darr.argmin() will give you the index corresponding to the minimum.

The reason you were getting an error is because argmin is a method understood by numpy arrays, but not by Python lists.

Eckardt answered 17/8, 2010 at 3:8 Comment(1)
True, though under the hood np.amin(darr) ends up calling np.asarray(darr).min(), and is about 50% slower due to extra __array_wrap__ code.Eckardt
H
0

You need to iterate the 2d array in order to get the min value of each row, then you have to push any gotten min value to another array and finally you need to get the min value of the array where each min row value was pushed

def get_min_value(self, table):
    min_values = []
    for i in range(0, len(table)):
        min_value = min(table[i])
        min_values.append(min_value)

    return min(min_values)
Hygeia answered 21/9, 2018 at 21:51 Comment(0)
W
0

If min value in array, you can try like:

>>> mydict = {"a": -1.5, "b": -1000.44, "c": -3}
>>> min(mydict.values())
-1000.44
Wise answered 9/6, 2020 at 17:2 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.