obspy example ejemplo python python-3.x numpy fft dft

python - example - solo los números enteros, los segmentos(`:`), los puntos suspensivos(`…`), numpy.newaxis(`Ninguno`) y los enteros o booleanos son índices válidos



fft python example (2)

Estoy implementando FFT como parte de mi tarea. Mi problema radica en la implementación de elementos de datos de orden aleatorio mediante la inversión de bits. Me sale la siguiente advertencia:

Advertencia de desaprobación: el uso de un número no entero en lugar de un entero dará como resultado un error en el futuro.

datos [x], datos [y] = datos [y], datos [x]

Y el sistema de calificación automática (proporcionado por la universidad) devuelve lo siguiente:

error: solo los números enteros, los segmentos (:), los puntos suspensivos ( ... ), numpy.newaxis ( None ) y los enteros o booleanos son índices válidos.

Mi código es:

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

Ya he implementado la función para fft pero no funcionará hasta que no funcione esta función de reproducción aleatoria. Creo que el problema es que mis datos son del tipo ''float64'' y es posible que los haya usado como un entero, pero no sé cómo puedo resolverlos.


Creo que su problema es el siguiente: en su bucle while, n se divide por 2, pero nunca se vuelve a convertir como un entero, por lo que se convierte en un flotante en algún punto. Luego se agrega a y, que también es un flotador, y eso le da una advertencia.


Puedes usar // en lugar de single /. Eso convierte a int directamente.