Python错误只能将长度为1的数组转换为Python标量
我是python编码新手 我正在编写一个代码来计算一个系列的和,我开始编写一个函数,其中输入是和的迭代次数,但是当我编译它时,它在Python错误只能将长度为1的数组转换为Python标量,python,matplotlib,Python,Matplotlib,我是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*
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)
当您调用范围(1,i,1)
时,这没有意义:i
不是单个值。您可以通过将范围(1,i,1)中l的替换为范围(1,i,1)
中l的来修复它
还有一些其他问题——我不确定cosgama
是在哪里定义的。您应该在将来提供一个。短版本的可能副本:使用np.sum
而不是sum
@aryamcarthy np.sum不起作用,问题在于范围输入,我想,“不起作用”是什么意思?错误是什么?@aryamcarthy与上面相同的错误,只有长度为1的数组可以转换为Python Scalars是的,我忘了告诉你我用我想要的任何值替换了cosgrama,但是对于i中的l,我不起作用,它说:无效语法确保在切换时删除了正确数量的右括号:正好是1。但这仍然不起作用(无效语法),你确定范围(1,i,1)中的l与范围(1,i,1)中的l相同吗?这正是它们是不同的结构,否则你仍然会得到另一个错误。编辑您的帖子以包含最新版本的代码。