2016-07-08 5 views
0

私は私のコードを使用してピリオドグラムを計算しようとしていますはTypeError:ufunc '乗算' は、署名マッチングタイプのDTYPE( 'S64')DTYPE( 'S64')DTYPEでループを含まれていませんでした( 'S64')

from scipy import signal 
import numpy as np 
import matplotlib.pyplot as plt 

x = [line.rstrip('\n') for line in open('27000.dat')] 
x = np.array(x) 
fs=64 

f, Pxx_den = signal.periodogram(x, fs) 
plt.semilogy(f, Pxx_den) 
plt.xlabel('frequency [Hz]') 
plt.ylabel('PSD [V**2/Hz]') 
plt.show() 

しかし、私は

File "m3.py", line 9, in <module> 
    f, Pxx_den = signal.periodogram(x, fs) 
    File "/home/milenko/miniconda2/lib/python2.7/site-packages/scipy/signal/spectral.py", line 141, in periodogram 
    scaling, axis) 
    File "/home/milenko/miniconda2/lib/python2.7/site-packages/scipy/signal/spectral.py", line 273, in welch 
    return_onesided, scaling, axis) 
    File "/home/milenko/miniconda2/lib/python2.7/site-packages/scipy/signal/spectral.py", line 391, in csd 
    mode='psd') 
    File "/home/milenko/miniconda2/lib/python2.7/site-packages/scipy/signal/spectral.py", line 824, in _spectral_helper 
    scale = 1.0/(fs * (win*win).sum()) 
TypeError: ufunc 'multiply' did not contain a loop with signature matching types dtype('S64') dtype('S64') dtype('S64') 

なぜですか? 私はUbuntu 16.04、Python 2.7.11を使用しています。

+0

[TypeError:ufunc 'add'に重複する可能性のあるシグネチャの一致タイプのループが含まれていません](http://stackoverflow.com/questions/35013726/typeerror-ufunc-add-did-not-contain-a-ループと署名の一致タイプ) –

答えて

0

this questionのように、あいまいなエラーコードは、浮動小数点データではなく文字列データでnumpy関数を実行することによって発生します。 rstripreturns a stringへの呼び出し。あなたのデータファイルがどのようなものかわかりませんが、x = np.array(x)の後にx = x.astype(np.float)を追加すると、問題が解決するはずです。

関連する問題