2016-01-22 7 views
8

Я реализую fft как часть своей домашней работы. Моя проблема заключается в реализации перетасовки элементов данных с использованием разворота бит. Я получаю следующее предупреждение:только целые числа, срезы (`:`), ellipsis (`...`), numpy.newaxis (`None`) и целые или логические массивы являются действительными индексами

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]

, и система автоматической классификации (при условии, университетом) возвращает следующее:

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

Мой код:

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 

Я уже реализован функция для fft, но это не сработает, пока я не получу эту функцию перетасовки. Я думаю, проблема в том, что мои данные имеют тип «float64», и я, возможно, использовал его как целое число, но я не знаю, как я могу его решить.

+1

Какова ценность 'y', когда вы получите эту ошибку? – Barmar

ответ

14

Я считаю, что ваша проблема заключается в следующем: в вашем цикле while n делится на 2, но никогда не добавляется как целое число, поэтому в какой-то момент оно становится плавающим. Затем он добавляется в y, который также является поплавком, и это дает вам предупреждение.

4

Вы можете использовать // вместо single /. Это напрямую преобразуется в int.

 Смежные вопросы

  • Нет связанных вопросов^_^