我正在实施fft作为我作业的一部分。我的问题在于使用位反转来实现数据元素的混乱。我收到以下警告:
DeprecationWarning:使用非整数而不是整数将导致将来出错。
data [x],data [y] = data [y],data [x]
自动评分系统(由大学提供)返回以下内容:
错误:只有整数,切片(
:
),省略号(...
),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
我已经实现了fft的功能,但是直到我让这个shuffling功能工作才能工作。我认为问题是我的数据属于' float64'我可能已将它用作整数,但我不知道如何解决它。
答案 0 :(得分:25)
我相信你的问题是这样的:在你的while循环中,n被除以2,但是再也不会被转换为整数,所以它在某个时刻变成了浮点数。然后将它添加到y上,这也是一个浮点数,它会给你警告。
答案 1 :(得分:16)
您可以使用//而不是单个/。这会直接转换为int
。
答案 2 :(得分:0)
在所有int
的前面放一个voxelCoord
...就像下面这样:
patch = numpyImage [int(voxelCoord[0]),int(voxelCoord[1])- int(voxelWidth/2):int(voxelCoord[1])+int(voxelWidth/2),int(voxelCoord[2])-int(voxelWidth/2):int(voxelCoord[2])+int(voxelWidth/2)]