scipy中的fftshift坏了吗?
我使用的是最新版本的numpy和scipy。
下面这个脚本无法运行:
import numpy as np
import matplotlib.pyplot as plt
from scipy.fftpack import fft, fftshift, fftfreq
hn= np.ones(10)
hF = fft(hn,1024)
shifted = fftshift(hF)
它给出了以下错误信息:
Traceback (most recent call last):
File "D:\deleteme\New3.py", line 6, in <module>
shifted = fftshift(hF)
File "C:\Python26\lib\site-packages\numpy\fft\helper.py", line 40, in fftshift
y = take(y,mylist,k)
File "C:\Python26\lib\site-packages\numpy\core\fromnumeric.py", line 103, in take
return take(indices, axis, out, mode)
TypeError: array cannot be safely cast to required type
补充说明: 我找到了问题所在。我的Python解释器在我的编辑器设置中被隐式调用了-Qnew选项。这个选项显然会导致scipy的代码出问题。感谢所有回复我的人!
2 个回答
0
在我的设置下运行得很好。如果你遇到问题,可能是当前版本的bug,可以试试安装一个旧版本,然后填写一个报告。
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> from scipy.fftpack import fft, fftshift, fftfreq
>>> hn= np.ones(10)
>>> hF = fft(hn,1024)
>>> shifted = fftshift(hF)
>>> shifted
array([ 0.00000000+0.j , 0.00084688+0.03066325j,
0.00338468+0.06122841j, ..., 0.00760489-0.09159769j,
0.00338468-0.06122841j, 0.00084688-0.03066325j])
>>> import sys
>>> sys.version
'2.6.4 (r264:75706, Jan 22 2010, 16:41:54) [MSC v.1500 32 bit (Intel)]'
>>> import numpy
>>> numpy.version.version
'1.3.0'
>>> import scipy
>>> scipy.version.version
'0.7.1'
>>> import matplotlib
>>> matplotlib.__version__
'0.99.1'
>>>
1
你应该在 http://www.scipy.org/BugReport 上提交一个错误报告。