Я реализую 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», и я, возможно, использовал его как целое число, но я не знаю, как я могу его решить.
Какова ценность 'y', когда вы получите эту ошибку? – Barmar