Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python错误只能将长度为1的数组转换为Python标量_Python_Matplotlib - Fatal编程技术网

Python错误只能将长度为1的数组转换为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*

我是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)

当您调用
范围(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相同吗?这正是它们是不同的结构,否则你仍然会得到另一个错误。编辑您的帖子以包含最新版本的代码。