Ahmed Gendy
Ahmed Gendy

Reputation: 113

ValueError: attempt to get argmax of an empty sequence

I get the following error when running the code below.

ValueError: attempt to get argmax of an empty sequence

The code is processing information from images sent to it from simulator.

It runs well at first but when the array Rover.nav_angles is empty i get the error although there is an if condition

if Rover.nav_angles is not None:
        Max_angle_points=np.argmax(Rover.nav_angles)
        MAX_DIST=np.max(Rover.nav_dists[Max_angle_points])

Upvotes: 11

Views: 43951

Answers (2)

zipa
zipa

Reputation: 27869

Use:

if Rover.nav_angles:
    ...

To check for emptiness and None. But it seems that you deal with numpy array so use:

if Rover.nav_angles.size:
    ...

Upvotes: 5

offeltoffel
offeltoffel

Reputation: 2801

In python it is mostly conceived better to try things rather than setting conditions around it.

try: 
    Max_angle_points=np.argmax(Rover.nav_angles)
    MAX_DIST=np.max(Rover.nav_dists[Max_angle_points])
except ValueError:
    pass
   # specify what the code should do, if the exception occurs.

To your actual problem: empty does not necessarily mean that your array is None. If you want to check with a condition, try

if Rover.nav_angles:
    Max_angle_points=np.argmax(Rover.nav_angles)
    MAX_DIST=np.max(Rover.nav_dists[Max_angle_points])

Upvotes: 0

Related Questions