Python 错误只有长度为 1 的数组可以转换为 Python 标量

标签 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*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/

相关文章:

python - 调用静态方法的惯用方式

python - Selenium 发现隐藏元素

python和pandas绘制两个日期索引值之间的图

python-3.x - MatPlotLib美元符号与数千个逗号刻度标签

python - HTTPSConnectionPool SSL错误证书验证失败

python - 属性错误 : 'NoneType' object has no attribute 'get' - Python - OpenErp

javascript - html 表单无法识别输入

python - matplotlib 将来自 csv 的 X Y Z 数据绘制为 pcolormesh

python - 如何在 matplotlib 上强制设置 x 刻度,或设置没有年份的日期时间类型

python - seaborn clustermap : subplots_adjust cancels colour bar relocation