Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

I am implementing fft as part of my homework. My problem lies in the implemention of shuffling data elements using bit reversal. I get the following warning:

DeprecationWarning: using a non-integer number instead of an integer will result in an error in the future.

data[x], data[y] = data[y], data[x]

And the auto grading system (provided by university) returns the following:

error: only integers, slices (:), ellipsis (...), numpy.newaxis (None) and integer or boolean arrays are valid indices.

My code is:

def shuffle_bit_reversed_order(data: np.ndarray) -> np.ndarray:     """     Shuffle elements of data using bit reversal of list index.      Arguments:     data: data to be transformed (shape=(n,), dtype='float64')      Return:     data: shuffled data array     """      # implement shuffling by reversing index bits      size = data.size      half = size/2;      for x in range(size):         xx = np.int(x)         n = np.int(half)          y = 0          while n > 0:             y += n * np.mod(xx,2)             n /= 2             xx = np.int(xx /2)          if (y > x):              data[x], data[y] = data[y], data[x]      return data 

I have already implemented the function for fft but it won't work until I get this shuffling function working. I think the problem is my data is of type 'float64' and I may have used it as an integer but I don't know how I can solve it.

like image 407
MessitÖzil Avatar asked Jan 22 '16 17:01

MessitÖzil


1 Answers

I believe your problem is this: in your while loop, n is divided by 2, but never cast as an integer again, so it becomes a float at some point. It is then added onto y, which is then a float too, and that gives you the warning.

like image 198
L. Hovan Avatar answered Sep 29 '22 18:09

L. Hovan