2017-05-12 5 views
0

私はPythonコード を初めて使用しています。シリーズの合計を計算するコードを書いています。合計の繰り返しが、私は、コンパイル時にそれは私にdef G(i)下の行にエラーを与える:長さだけ-1の配列はPythonのスカラーにPythonエラー長さ1の配列のみをPythonスカラーに変換する

を変換することができ、あなたが私を助けることができますしてください

import matplotlib.pyplot as plt 
import numpy as np 
import scipy.special as sp 
import pylab as pylab 

def G(i): 
    return (sum(((-1*(2*l+1))/(4*np.pi*(l**2+l)))*sp.legendre(l)(0.5) for l in i)) 

pylab.ylim([-1,1]) 
sumrange = np.arange(1,70,1) 
plt.plot(sumrange,G(sumrange),color='red') 
+0

[TypeError:Length-1配列のみを指数関数的にフィットさせようとしている間に、Pythonスカラに変換することができます](http://stackoverflow.com/questions/21687581/typeerror-only-length-1-arrays- –

+0

短いバージョン: 'sum'の代わりに' np.sum'を使います。 –

+0

@aryamccarthy np.sumは機能しません、問題は範囲の入力と思っています – outlawoutlawz

答えて

0

問題は茎iはシーケンスであり、単一の値ではありません。あなたの場合、それはnp.arange(1,70,1)です。

range(1,i,1)に電話すると、意味をなさない:iは単一の値ではありません。 for l in range(1,i,1)for l in iに置き換えて修正できます。

その他の問題もあります。cosgammaが定義されているかどうかわかりません。あなたは将来、Minimum, Complete, and Verifiable exampleを提供するべきです。

+0

はい、私はcosgammaを私が望む任意の値に置き換えたと言って忘れましたが、私は働いていません、それは言う:無効な構文 – outlawoutlawz

+0

スイッチを切ったときに閉じ括弧の正しい数を削除してください。 –

+0

しかし、これは動作しない(無効な構文)、範囲内のl(1、i、1)がiのlと同じであることを確かめますか? – outlawoutlawz

関連する問題