只有整数,切片(`:`),省略号(```),numpy.newaxis(`None`)和整数或布尔数组才是有效的索引

Mes*_*zil 32 python numpy fft dft python-3.x

我正在实施fft作为我作业的一部分.我的问题在于使用位反转来实现数据元素的混乱.我收到以下警告:

DeprecationWarning:使用非整数而不是整数将导致将来出错.

data [x],data [y] = data [y],data [x]

自动评分系统(由大学提供)返回以下内容:

错误:只有整数,slices(:),省略号(...),numpy.newaxis(None)和整数或布尔数组才是有效索引.

我的代码是:

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
Run Code Online (Sandbox Code Playgroud)

我已经实现了fft的功能,但是直到我让这个shuffling功能工作才能工作.我认为问题是我的数据类型为'float64',我可能已将它用作整数,但我不知道如何解决它.

小智 29

我相信你的问题是这样的:在你的while循环中,n除以2,但从不再作为整数转换,所以它在某个时刻变成了浮点数.然后将它添加到y上,这也是一个浮点数,然后会给出警告.


Sar*_*pta 19

您可以使用//而不是单个/.int直接转换为.

  • 奇迹般有效 (3认同)