我是Python编码新手
我正在编写一个代码来计算一系列的总和,我首先编写一个函数,其中输入是总和的迭代次数,但是当我编译时,它在 def G 下的行中给出了错误(i)
:只有长度为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')
最佳答案
问题源于以下事实: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 .
关于Python 错误只有长度为 1 的数组可以转换为 Python 标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43945729/