Python 设置具有序列错误的数组元素

Python 设置具有序列错误的数组元素,python,Python,第二版 这是生成斯托克斯线的方式: os.system('pdv -t %s > temp.txt ' % epoch_name) stokes_line = np.genfromtxt('temp.txt', usecols=3, dtype=[('stokesI','float')], skip_header=1) os.system('vap -nc "mjd" %s >> mjd.txt' % new_y[i]) stokes_list[b] = st

第二版

这是生成斯托克斯线的方式:

os.system('pdv -t %s > temp.txt ' % epoch_name)
    stokes_line = np.genfromtxt('temp.txt', usecols=3, dtype=[('stokesI','float')],     skip_header=1)

os.system('vap -nc "mjd" %s >> mjd.txt' % new_y[i])
stokes_list[b] = stokes_line
pdv是来自另一个程序的命令,该程序生成斯托克斯线中使用的一些数字

stokes_列表每次都会在循环中添加一条新的stokes_线

编辑:

stokes_线是使用numpy.genfromtxt命令创建的,因此从txt文件中提取,由浮点数组成,它们如下所示:

[0.00126596,0.000621272,0.00058694,…,0.0015368, 0.000926448,7.95851e-05,]

它们一起组成一个斯托克斯列表,每条斯托克斯线由相同数量的浮点数组成

问题是因为genfromtxt并没有创建一个全部为方括号的列表,而是创建了一个称为序列的列表

我编写了一个python代码,它在我的笔记本电脑python 2.7.3版上运行,但在我的大学桌面电脑python 2.5.2版上似乎没有运行

我不认为在这里显示大量代码是有用的,但错误信息在这两行中的第二行:

os.system('vap -nc "mjd" %s >> mjd.txt' % new_y[i])
stokes_list[b] = stokes_line
其中vap是来自另一个程序的命令,返回一些值。无论如何,问题的关键是,只有在运行较旧版本的Python时,我才会收到以下错误消息:

ValueError:使用序列设置数组元素

现在我做了一点研究,人们说问题是由于一些这样的列表的长度不兼容造成的——但是如果是这样的话,为什么在我的较新版本的Python上运行它时它工作得很好呢

任何帮助都会很好,谢谢

格式,在2.6中添加了

os.system'vap-nc mjd%s>>mjd.txt'%new_y[i]应该可以工作。

当您使用np.genfromtxt…,usecols=3,dtype=[stokesI,float],您正在构造一个只有一个stokesI字段的结构化数组。当然,当您打印阵列时,会出现以下结构:

[(0.00126596,) (0.000621272,) (0.00058694,) ..., (0.0015368,) (0.000926448,) (7.95851e-05,)]
每个项都是一个np.void,由一个命名的float字段组成

看起来有点浪费,您可以将表达式简化为:

np.genfromtxt(…,usecols=3, dtype=float)
然后你会得到:

[  1.26596000e-03   6.21272000e-04   5.86940000e-04 ...  1.53680000e-03
   9.26448000e-04   7.95851000e-05]

它在较旧版本的Python上显然失败的可能原因是您使用的是较旧版本的NumPy,如1.4或1.5。Ndarray的构造有了一些改进,因为更好地处理了生成器,从字符串自动转换…

您需要显示代码来解释stokes_列表和stokes_线是什么。哦,好的,我现在单击了链接。很抱歉我会重温我的老问题并接受一些答案。它看起来并不能描述它是什么。发布更多的代码;特别是在您生成stokes_线和stokes_列表的地方,而不是在没有适当嵌入的情况下将代码的零碎部分提供给我们;一次发布全部内容,这样我们就不必一直要求相同的内容。如果我发布全部代码,就会混淆问题。我试图通过关注导致问题的代码部分来提供帮助。我自己修复了它——对其他人来说——问题是genfromtxt正在创建一个“结构化数组”或“记录数组”,而较旧版本的python不喜欢将其放入列表中。我刚刚删除了dtype,它变成了一个常规数组。对不起,我原来在中有这个,但我更改了它,因为有人告诉我它不起作用。我只是忘了在这里删除它-我现在就编辑。但问题是一样的。你需要按照布伦巴恩的建议更新原始问题。