0
我有一個名爲data
的列表,我想截斷它,使它的長度是2的冪。當前的方法I使用如下:如何查找和截斷列表到最近的2次冪(以最pythonic的方式)
n = 1 # dummy variable
while len(data)/(2**n) > 1:
n += 1
nearest_n = n - 1
data_trunc = data[0:2**nearest_n]
這樣做的工作;但是,對於while
循環,它使用虛擬整數n
,該循環不是非常「pythonic」。
有人可以提供更多pythonic或高效方法嗎?
推理:
我截斷data
的原因是因爲我要執行FFT。您可以使用這個技巧來減少FFT計算時間,對結果影響不大。
FFT的工作原理是將數據分成奇數和偶數集,並且可以執行的次數越多,計算得越快。因此,長度可分爲2,可以分割得越多,計算時間就越短。相比之下,列出素數的長度是最慢的。
我並不打算對FFT的'零填充'與'截斷'數據進行討論,而是關注最具pythonic的方式來找出給定數字的2的最近冪。
看看這個先前問的問題(http://stackoverflow.com/questions/3797575/find-largest-power-of-two-less-than-x-number)。 –
是的就是這樣。很好找 –