2016-01-22 5 views
8

I fft als Teil meiner Hausaufgaben ist die Umsetzung. Mein Problem liegt in der Implementierung von Shuffling Datenelemente mit Bit-Umkehrung. Ich erhalte die folgende Warnung:nur ganze Zahlen, Scheiben (`:`), Auslassungszeichen (`...`), numpy.newaxis (`None`) und integer oder boolean Arrays gelten Indizes

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]

Und das Auto-Grading-System (von der Universität zur Verfügung gestellt) gibt Folgendes zurück:

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

Mein Code ist:

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 

ich bereits umgesetzt habe, Funktion für fft, aber es wird nicht funktionieren, bis ich diese Shuffling-Funktion funktioniert. Ich denke das Problem ist, dass meine Daten vom Typ 'float64' sind und ich könnte es als eine ganze Zahl benutzt haben, aber ich weiß nicht, wie ich es lösen kann.

+1

Was ist der Wert 'Y', wenn Sie diesen Fehler erhalten? – Barmar

Antwort

14

Ich glaube, Ihr Problem ist folgende: in Ihrer while-Schleife, n durch 2, aber nie gegossen als eine ganze Zahl wieder geteilt, so wird es ein Schwimmer an einem gewissen Punkt. Es wird dann auf y addiert, was dann auch ein Float ist, und das gibt Ihnen die Warnung.

4

können Sie verwenden // statt single /. Das konvertiert direkt zu int.

Verwandte Themen