2010-08-13 1 views
0

Я использую последнюю версию numpy/scipy.
Следующий скрипт не работает:fftshift сломанный в 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 

EDIT: я нашел эту проблему. Мой интерпретатор python был неявно вызван (через настройки моего редактора) с параметром -Qnew. Это, по-видимому, нарушает скудный код. Спасибо всем, кто ответил!

+0

Прекрасно работает для меня. Вы уверены, что код скопирован правильно? – katrielalex

+0

Также отлично работал для меня. Я использую последние версии выпусков Numpy (1.5.0b1) и Scipy (0.8.0rc3). –

ответ

0

прекрасно работают с моей установкой, если это ошибка в текущей версии попытаться установить более старую версию и заполнять отчет.

>>> 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' 
>>>