只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效索引
only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
我将实施 fft 作为作业的一部分。我的问题在于使用位反转来实现混洗数据元素。我收到以下警告:
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]
以及自动评分系统(由大学提供)returns以下内容:
error: only integers, slices (:
), ellipsis (...
), numpy.newaxis (None
) and integer or boolean arrays are valid indices.
我的代码是:
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 的功能,但是在我让这个洗牌功能工作之前它不会工作。我认为问题是我的数据是 'float64' 类型,我可能将其用作整数,但我不知道如何解决它。
我相信你的问题是这样的:在你的 while 循环中,n 除以 2,但再也没有转换为整数,所以它在某些时候变成了浮点数。然后它被添加到 y 上,y 也是一个浮点数,这会给你警告。
您可以使用 // 而不是单个 /。直接转换为 int
。
在所有 voxelCoord
的前面放一个 int
...如下所示:
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)]
我将实施 fft 作为作业的一部分。我的问题在于使用位反转来实现混洗数据元素。我收到以下警告:
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]
以及自动评分系统(由大学提供)returns以下内容:
error: only integers, slices (
:
), ellipsis (...
), numpy.newaxis (None
) and integer or boolean arrays are valid indices.
我的代码是:
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 的功能,但是在我让这个洗牌功能工作之前它不会工作。我认为问题是我的数据是 'float64' 类型,我可能将其用作整数,但我不知道如何解决它。
我相信你的问题是这样的:在你的 while 循环中,n 除以 2,但再也没有转换为整数,所以它在某些时候变成了浮点数。然后它被添加到 y 上,y 也是一个浮点数,这会给你警告。
您可以使用 // 而不是单个 /。直接转换为 int
。
在所有 voxelCoord
的前面放一个 int
...如下所示:
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)]