2016-04-22 1 views
1

scipyのダウンロードinterp1d関数に2つのタプルやリストのリストの1つのリストを渡す:現在、私はこのよう<code>interp1d</code>にデータを渡している

x_ = [4,5,6,7,8] 
y_ = [146,228,350,493,637] 

y_interp = scipy.interpolate.interp1d(x_, y_) 
print y_interp(5.6) 

-> 301.2 

はタプルのペアやリストのリストとしてデータを渡すことが可能ですリスト?

data = [[4,146],[5,228],[6,350],[7,493],[8,637]] 

# or 

data = [(4,146),(5,228),(6,350),(7,493),(8,637)] 


y_interp = scipy.interpolate.interp1d(data) 
print y_interp(5.6) 

-> error.. 

答えて

2

あなたが一緒にタプル(またはリスト)を集約するzipを使用して、引数

>>> data = [(4,146),(5,228),(6,350),(7,493),(8,637)] 
>>> y_interp = scipy.interpolate.interp1d(*zip(*data)) 
301.2 

編集としてあなた二つの新しいシーケンスを展開することができます。

ますので、」データを渡してPython 2.xで作業する目的でデータを再構成するだけで、より良いのはitertools.izipなのでiterableを生成し、リストのオーバーヘッドを持たない。

関連する問題