sympy.Sum error: IndexError: only integers, slices (`:`), ellipsis (`…`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

huangapple go评论97阅读模式
英文:

sympy.Sum error: IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

问题

以下是您要翻译的代码部分:

  1. def draw_fourier(a, n):
  2. if len(a) < 2*n + 1:
  3. return NotImplemented
  4. else:
  5. return (1/n) * sy.Sum(a[y] * np.exp(1j * y * t), (y, -n, n))

错误信息如下:

  1. line 91, in draw_fourier
  2. return (1/n) * sy.Sum(a[y] * np.exp(1j * y * t), (y, -n, n))
  3. IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

希望这可以帮助您解决问题。如果您有任何其他疑问,请随时提出。

英文:

I am programming the following function (in python):

  1. def draw_fourier(a, n):
  2. if len(a) &lt; 2*n + 1:
  3. return NotImplemented
  4. else:
  5. return (1/n) * sy.Sum(a[y] * np.exp(1j * y * t), (y, -n, n))

(sy. signifies sympy and np. signifies numpy)
And I get the following error:

  1. line 91, in draw_fourier
  2. return (1/n) * sy.Sum(a[y] * np.exp(1j * y * t), (y, -n, n))
  3. IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

I previously also got similar errors with sympy.Sum - I have yet to actually successfully use it, so I am curious as to what I am doing wrong, or understanding wrong about the function. I would like it to evaluate the sum for $y$ from $-n$ to $n$. a is a list and n is an (positive) integer. The reason I am using sympy is that 't' is a symbol, which I would like to assign a value to later.

Many thanks,
Hugo

答案1

得分: 1

当您使用 sy.Sum(expression, (dummy_variable, start, end)) 时,您的 dummy_variable(在这种情况下为 y)是一个符号。错误在于 y 不能作为列表 a 的索引,因为它不是有效的索引类型,而是一个符号。

一个简单的方式来编写具有符号求和的表达式,其中 a 中的系数在每一项中都发生变化,可以是:

  1. summation = 0 # 一些初始化
  2. for i in range(-n, n):
  3. summation += a[i] * sy.exp(1j * i * t)
  4. summation = (1 / n) * summation # 最终表达式
英文:

When you use sy.Sum(expression, (dummy_variable, start, end)) your dummy_variable (in this case y) is a symbol. The error is that y cannot be an index of the list a because it is not a valid type for an index, as it is a symbol.

A simple way to write that symbolic summation where the coefficient in a changes in every term could be:

  1. summation=0 #some initialization
  2. for i in range(-n,n):
  3. summation+=a[i]*sy.exp(1j*i*t)
  4. summation=(1/n)*summation #final expression

huangapple
  • 本文由 发表于 2023年6月22日 20:15:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/76531792.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定