Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does 'index 0 is out of bounds for axis 0 with size 0' mean?

I am new to both python and numpy. I ran a code that I wrote and I am getting this message: 'index 0 is out of bounds for axis 0 with size 0' Without the context, I just want to figure out what this means.. It might be silly to ask this but what do they mean by axis 0 and size 0? index 0 means the first value in the array.. but I can't figure out what axis 0 and size 0 mean.

The 'data' is a text file with lots of numbers in two columns.

x = np.linspace(1735.0,1775.0,100) column1 = (data[0,0:-1]+data[0,1:])/2.0 column2 = data[1,1:] x_column1 = np.zeros(x.size+2) x_column1[1:-1] = x x_column1[0] = x[0]+x[0]-x[1] x_column1[-1] = x[-1]+x[-1]-x[-2] experiment = np.zeros_like(x) for i in range(np.size(x_edges)-2):     indexes = np.flatnonzero(np.logical_and((column1>=x_column1[i]),(column1<x_column1[i+1])))     temp_column2 = column2[indexes]     temp_column2[0] -= column2[indexes[0]]*(x_column1[i]-column1[indexes[0]-1])/(column1[indexes[0]]-column1[indexes[0]-1])     temp_column2[-1] -= column2[indexes[-1]]*(column1[indexes[-1]+1]-x_column1[i+1])/(column1[indexes[-1]+1]-column1[indexes[-1]])     experiment[i] = np.sum(temp_column2)    return experiment 
like image 901
Seoyeon Hong Avatar asked Jan 05 '17 18:01

Seoyeon Hong


People also ask

How do you fix too many indexes in an array?

The Python "IndexError: too many indices for array" occurs when we specify too many index values when accessing a one-dimensional numpy array. To solve the error, declare a two-dimensional array or correct the index accessor.

What does index out of bounds mean in Python?

This error basically means you are trying to access a value at a List index which is out of bounds i.e greater than the last index of the list or less than the least index in the list.


1 Answers

In numpy, index and dimension numbering starts with 0. So axis 0 means the 1st dimension. Also in numpy a dimension can have length (size) 0. The simplest case is:

In [435]: x = np.zeros((0,), int) In [436]: x Out[436]: array([], dtype=int32) In [437]: x[0] ... IndexError: index 0 is out of bounds for axis 0 with size 0 

I also get it if x = np.zeros((0,5), int), a 2d array with 0 rows, and 5 columns.

So someplace in your code you are creating an array with a size 0 first axis.

When asking about errors, it is expected that you tell us where the error occurs.

Also when debugging problems like this, the first thing you should do is print the shape (and maybe the dtype) of the suspected variables.

Applied to pandas

  • The same error can occur for those using pandas, when sending a Series or DataFrame to a numpy.array, as with the following:
    • pandas.Series.values or pandas.Series.to_numpy() or pandas.Series.array
    • pandas.DataFrame.values or pandas.DataFrame.to_numpy()

Resolving the error:

  1. Use a try-except block
  2. Verify the size of the array is not 0
    • if x.size != 0:
like image 188
hpaulj Avatar answered Sep 18 '22 12:09

hpaulj