【问题标题】:Python Error only length-1 arrays can be converted to Python scalarsPython 错误只有长度为 1 的数组可以转换为 Python 标量
【发布时间】:2017-05-12 20:09:37
【问题描述】:

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

【问题讨论】:

标签: python matplotlib


【解决方案1】:

问题源于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

【讨论】:

  • 是的,我忘了告诉我用我想要的任何值替换 cosgamma,但是对于 l in i 不起作用,它说:语法无效
  • 确保在切换时删除了正确数量的右括号:正好 1。
  • 但这直到不起作用(无效语法),您确定 for l in range(1,i,1) 与 for l in i 相同吗?
  • 这正是它们是不同构造的关键,否则你仍然会得到另一个错误。编辑您的帖子以包含最新版本的代码。
猜你喜欢
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 2014-09-27
  • 2013-03-15
  • 1970-01-01
  • 2016-03-10
相关资源
最近更新 更多