seuls les entiers, les tranches (`:`), les ellipses (`...`), numpy.newaxis (`None`) et les tableaux entiers ou booléens sont des indices valides
Je suis la mise en œuvre de la fft dans le cadre de mes devoirs. Mon problème réside dans la mise en œuvre de mélanger les éléments de données à l'aide de peu d'inversion. Je reçois le message d'avertissement suivant:
DeprecationWarning: à l'aide d'un non-nombre entier au lieu d'un nombre entier d'entraîner une erreur dans l'avenir.
de données[x], [y] = [y], [x]
Et l'auto système de classement (fourni par l'université) renvoie les éléments suivants:
erreur: seuls les nombres entiers, en tranches (
:
), points de suspension (...
), numpy.newaxis (None
) et entier booléen ou les tableaux sont valables indices.
Mon code est:
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
J'ai déjà mis en place la fonction fft, mais il ne fonctionnera pas jusqu'à ce que je obtenir ce brassage de la fonction de travail. Je pense que le problème est que mes données est de type 'float64" et j'ai peut-être utilisé comme un entier, mais je ne sais pas comment je peux le résoudre.
source d'informationauteur Uttam
Vous devez vous connecter pour publier un commentaire.
Je crois que votre problème est ceci: dans votre boucle while, n est divisée par 2, mais jamais jeté comme un entier, donc il devient un flotteur à un certain point. Il est ensuite ajouté sur y, ce qui est alors un flotteur trop, et qui vous donne l'avertissement.
Vous pouvez utiliser /de/au lieu de /unique. Qui sont convertis en
int
directement.