gpt4 book ai didi

python - 零填充数据,直到其长度等于 2 的幂

转载 作者:行者123 更新时间:2023-11-28 20:41:01 29 4
gpt4 key购买 nike

我正在尝试编写一个可以对一些数据进行零填充的函数,直到其长度等于最接近的 2 的更高次幂。我还希望能够对此进行一定次数的迭代。现在这是我的职能:

def pad_to_next_2n(array, iterations = 1):
n = 1
while n <= iterations:
l = len(array)
padding = l +1 #incase array is already length equal to 2^n
while np.log2(padding) % 1 != 0:
padding += 1
if l % 2 == 0:
total_padding = padding - l
array = np.pad(array, (total_padding/2,), 'constant')
n += 1
else:
total_padding = padding - l
left_padding = (total_padding - 1)/2
right_padding = total_padding - left_padding
print total_padding
print left_padding
print right_padding
array = np.pad(array, (left_padding, right_padding), 'constant')
n += 1
return array

这确实有效,但对于高于 5 次的迭代来说它真的很慢。我想知道是否有人可以帮助提高速度或找到更好的方法来做到这一点。我相信最大的问题来自

while np.log2(padding) % 1 != 0:
padding += 1

部分,但我不确定如何提高效率。

最佳答案

您不必每次都将内边距增加 1 来进行迭代。只需计算您需要的下一个尺寸。下一个总大小是 2**int(log2(current_size)+1)

然后您可以减去 current_size 并知道您需要多少填充。

关于python - 零填充数据,直到其长度等于 2 的幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625626/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com