Numpy: Numpy.fft.fft (Trac # 1266) рдореЗрдВ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рджреМрдбрд╝

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рдЕрдХреНрддреВре░ 2012  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: numpy/numpy

_Original рдЯрд┐рдХрдЯ http://projects.scipy.org/numpy/ticket/1266 2009-10-19 рдкрд░ trac user koehler рджреНрд╡рд╛рд░рд╛, рдЕрдЬреНрдЮрд╛рдд рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ ред_

рд╣рд╛рд▓рд╛рдБрдХрд┐ numpy.fft.fft рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐:
"рдпрд╣ рджреЛ рдХреА рдирд╛ рдкреЙрд╡рд░ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реИред рдпрд╣ fft's рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╢реАрд▓ рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдХреИрд╢ рднреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рднрд┐рдиреНрди n рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╛рд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдореЗрдореЛрд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рдЪрд▓ рд╕рдХрддреЗ рд╣реИрдВред" , рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ fft рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдорддрд╛ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдирд┐рд░реНрднрд░, fft рд░рдирдЯрд╛рдЗрдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд░рдо рдмрджрд▓рддрд╛ рд╣реИ:

[ipython shell, from numpy import *]
In [1]: %time fft.fft(zeros(119516))
CPU times: user 22.83 s, sys: 0.39 s, total: 23.23 s
Wall time: 23.53 s

In [3]: %time fft.fft(zeros(119517))
CPU times: user 36.33 s, sys: 0.08 s, total: 36.40 s
Wall time: 36.51 s

In [5]: %time fft.fft(zeros(119518))
CPU times: user 4.88 s, sys: 0.08 s, total: 4.96 s
Wall time: 5.02 s

In [7]: %time fft.fft(zeros(119519))
CPU times: user 0.45 s, sys: 0.00 s, total: 0.45 s
Wall time: 0.45 s

In [9]: %time fft.fft(zeros(119515))
CPU times: user 0.07 s, sys: 0.00 s, total: 0.08 s
Wall time: 0.08 s

In [11]: %time fft.fft(zeros(119514))
CPU times: user 15.84 s, sys: 0.06 s, total: 15.90 s
Wall time: 15.95 s

In [13]: %time fft.fft(zeros(119513))
CPU times: user 272.75 s, sys: 1.03 s, total: 273.78 s
Wall time: 275.63 s

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрд╣ рд╕рдВрдЦреНрдпрд╛ 1.17 рдореЗрдВ рддрдп рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рд╕рднреА 19 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

_ @ рдПрдВрдбреЛрд▓рд┐рде рдиреЗ 2009-11-20_ рдкрд░ рд▓рд┐рдЦрд╛

рд╕рдВрдмрдВрдзрд┐рдд: # 1177 http://projects.scipy.org/scipy/ticket/949

_ @ rgommers рдиреЗ 2011-03-01_ рдкрд░ рд▓рд┐рдЦрд╛

_ @ rgommers рдиреЗ 2011-03-01_ рдкрд░ рд▓рд┐рдЦрд╛

рдбреЗрд╡рд┐рдб рд╕реА рдиреЗ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдмреНрд▓реВрд╕реНрдЯреАрди рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ: https://github.com/cournape/numpy/tree/bluestein

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ Numpy рдЯреНрд░рдВрдХ рдореЗрдВ рдЬрд▓реНрдж рд╣реА рдЬрдореАрди рдЪрд╛рд╣рд┐рдПред

2011-03-25 рдкрд░ @mwiebe рджреНрд╡рд╛рд░рд╛ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ Unscheduled рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛

рдЗрд╕ рдЬрдирд╕рдВрдкрд░реНрдХ рдореЗрдВ рдЫреЛрдЯреЗ рдЕрдкрд░рд╛рдзреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдбрд┐рдВрдЧ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ
https://github.com/scipy/scipy/pull/3144
рдПрдХ рдмреЗрд╣рддрд░ рдкреИрдбрд┐рдВрдЧ рдЖрдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЕрдВрдХ fftpack рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ

рд╣рд╛рдВ, m = 2 ** nextpow2(2 * n - 1) рдмрдЬрд╛рдп next_regular рдлрд╝рдВрдХреНрд╢рди рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддреЗрдЬрд╝ рд╣реЛрдЧрд╛

рдореИрдВ рднреА рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ pymbar рдХреЗ рдбреЗрдЯрд╛рдореЙрдбреЗрд▓реНрд╕ рдСрдЯреЛрдХреНрд░реЙрд▓реЗрд╢рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЙрд▓

 np.fft.fftpack._fft_cache.clear()

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕реНрдореГрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЦрддрд░рдирд╛рдХ рд░реВрдк рд╕реЗ рди рдмрдврд╝реЗред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЖрджрд░реНрд╢ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╛ рддреЛ рдХреЛрдИ рдХрдВрд╡рд░ рдЬреИрд╕реЗ "рдореЗрдорд╕реЗрдлрд╝ = рдЯреНрд░реВ" рдФрд░ / рдпрд╛ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдП рдмрд┐рдирд╛ рдХреИрд╢реЗ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░реЗрдВред

@juliantaylor рдкреИрдбрд┐рдВрдЧ рд╕рд╛рджреЗ FFTs рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИ, рд╕рд╣реА рд╣реИ? рд╕рд┐рд░реНрдл рдХрдирд╡рд┐рдХреНрд╢рди / рд╕рд╣рд╕рдВрдмрдВрдз?

@rgommers Bluestein рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдореБрдЦреНрдп рдЖрдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП FFT рдХреА рдЧрддрд┐ https://github.com/scipy/scipy/issues/4288 рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рдЪрд┐рд░рд╛рдЧреЛрдВ рдХреА рдкреВрд░реНрд╡-рд╕рдВрдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рд░рдЦрддреЗ рд╣реИрдВ рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛрддрд╛ рд╣реИ рдореЗрдореЛрд░реА рдореЗрдВ рдЪрд┐рд░рдк рдХрд░реЗрдВ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдЪрдВрдХреНрд╕ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред рддреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕реБрдиреНрди рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП scipy.fftpack.czt рдХреЗ рд▓рд┐рдП рд╕реНрдердЧрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП?

рд╡реИрд╕реЗ рднреА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ https://github.com/numpy/numpy/issues/1177 рдХреЗ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдЬрдм рддрдХ рдХрд┐ рд░реЗрдбрд░ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреА рддрд░рд╣ рдХреБрдЫ рдФрд░ рдмреНрд▓реВрд╕реНрдЯреАрди рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ?

рдФрд░ @smcantab рдХрд╛ рдореБрджреНрджрд╛ рдЕрд▓рдЧ рд╣реИ?

@endolith рдпрд╣ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рдерд╛ :) рд▓реЗрдХрд┐рди рд╣рд╛рдВ, рдЕрдм рдЬрдм рдореИрдВ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд▓рдЧрддрд╛ рд╣реИред рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдИ рдЧрдИ рд╕рдорд╕реНрдпрд╛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП pymbar рдореЗрдВ рд╕реБрдЭрд╛рдП рдЧрдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдерд╛ред

FYI рдХрд░реЗрдВ, рдореИрдВ рдПрдХ рдСрдбрд┐рдпреЛ рдХреЙрдиреНрдлреНрд░реЗрдВрд╕ рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рднрд╛рдЧрд╛, рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдпрд╣ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдпрд╛ред рдпрд╣ рдкреБрди: рдкреЗрд╢ рдХрд░рдирд╛ рдФрд░ рдЪрд░рдо рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред

%time np.fft.fft( np.random.randn(100000) )
Wall time: 16 ms
Out[16]: 
array([ 196.58599022  +0.j        ,  -88.38483360 +89.2507627j ,
       -166.72250316+339.27161306j, ...,   12.22959535 -64.01621313j,
       -166.72250316-339.27161306j,  -88.38483360 -89.2507627j ])

%time np.fft.fft( np.random.randn(100003) )
Wall time: 1min 42s
Out[17]: 
array([  13.36160617  +0.j        , -314.86472577-340.44686425j,
       -258.36716707-170.43805382j, ...,  -21.18014704+441.3618185j ,
       -258.36716707+170.43805382j, -314.86472577+340.44686425j])

рд▓рдВрдмрд╛рдИ 1 рдПрдл 6: 16 рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб

рд▓рдВрдмрд╛рдИ 1e6 + 3: 1 MINUTE рдФрд░ 42 SECONDS рдХреА рдЪреЛрд░реА

рдлрд╝реАрдЪрд░, рдмрдЧ рдирд╣реАрдВред FFTPACK рдХреЗрд╡рд▓ "рддреЗрдЬрд╝" рд╣реИ рдЬрдм рдЖрдХрд╛рд░ рдХрд╛рд░рдХ рд╕рдВрдЦреНрдпрд╛ 2, 3, 4, 5 рдХреЗ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдмрдбрд╝реЗ рдкреНрд░рд╛рдЗрдо рд╕рд╛рдЗрдЬрд╝ рдХреЗ рд▓рд┐рдП рддреЗрдЬрд╝ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЗрдЪреНрдЫрд╛ рд░рд╣реА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ 100003 рдЕрднрд╛рдЬреНрдп рд╣реИред

рдореИрдВ рдЗрд╕реЗ "рд╕реБрд╡рд┐рдзрд╛" рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рдмрдЧ рдирд╣реАрдВ рд╣реИред :)

https://github.com/scipy/scipy/issues/4288 рдореЗрдВ рдмреНрд▓реВрд╕реНрдЯрд┐рди рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рдЪрд┐рд░ рдХреА рд╕рдВрдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдореБрдЦ рдЖрдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред

рджрд┐рд▓рдЪрд╕реНрдкред рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдФрд░ рдорддрд▓рд╛рдм рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрдлреНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдВ рдХрд┐ рдЬреВрд▓рд┐рдпрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред

рдЬреВрд▓рд┐рдпрд╛ рдФрд░ рдорддрд▓рд╛рдм рдПрдлрдПрдлрдЯреАрдбрдмреНрд▓реНрдпреВ рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдо рдЗрд╕рдХреЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ FFTW рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рд╣реИрдВ; pyFFTW рдмрд▓реНрдХрд┐ рд╡рд░реНрддрдорд╛рди рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдПрдлрдПрдлрдЯреА рдЧрддрд┐ рдПрдХ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдпрд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реИред FFTPACK рдЕрдкрдиреЗ рджрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЖрдЧреЗ рдмрдврд╝ рдЧрдП рд╣реИрдВред

@charris рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдпрд╣ рд╕рдВрдЦреНрдпрд╛ 1.17 рдореЗрдВ рддрдп рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдзрдиреНрдпрд╡рд╛рдж @mreineck , рд╕рдорд╛рдкрди

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕