Python Error只有length-1数组可以转换为Python标量

时间:2017-05-12 20:09:37

标签: python matplotlib

我是python编码的新手 我正在编写一个代码来计算一个系列的总和,我开始写一个函数,其中输入是总和的迭代次数,但是当我编译它时,我在def G(i)下的行中给出了错误:只能将length-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')

1 个答案:

答案 0 :(得分: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