大家下午。我目前正在将 IDL 代码移植到 python,到目前为止,它一直在顺利进行。我被困在 IDL 代码的这一部分:
nsteps = 266
ind2 = ((lindgen(nsteps+1,nsteps+1)) mod (nsteps+1))
dk2 = (k2arr((ind2+1) < nsteps) - k2arr(ind2-1) > 0)) / 2.
我的这个版本包括一个重写的 lindgen 函数,如下所示:
def pylindgen(shape):
nelem = numpy.prod(numpy.array(shape))
out = numpy.arange(nelem,dtype=int)
return numpy.reshape(out,shape)
...以及移植的代码,其中 k2arr 是一个形状数组(267,):
ind2 = pylindgen((nsteps+1,nsteps+1)) % (nsteps+1)
dk2 = (k2arr[ (ind2+1) < nsteps ] - k2arr[ (ind2-1) > 0. ]) / 2.
现在,问题是我的代码使 ind2 成为一个数组,通过查看 IDL 代码和 python 脚本中抛出的错误,我确定它是一个标量。我是否缺少这些 IDL 功能的某些功能?
任何想法将不胜感激。干杯。