Python 在genfromtxt中解压缩的值太多

Python 在genfromtxt中解压缩的值太多,python,numpy,genfromtxt,Python,Numpy,Genfromtxt,我有一个包含振动数据的tsv文件(出于某些愚蠢的原因,用逗号代替点,因此转换器)。我想从其中两个通道生成numpy数组,但得到了一个我无法理解的“ValueError:太多的值需要解包(预期为2)” 在ipython中(带pylab选项): [171]中的导入re 在[172]中:定义qdsub: …:返回re.sub(“\,”,“.”,str(s)[2:-1]) .....: 在[173]中,x,y=genfromtxt('QD1_short.tsv',分隔符='\t',usecols=(0,

我有一个包含振动数据的tsv文件(出于某些愚蠢的原因,用逗号代替点,因此转换器)。我想从其中两个通道生成numpy数组,但得到了一个我无法理解的“ValueError:太多的值需要解包(预期为2)”

在ipython中(带pylab选项):

[171]中的
导入re
在[172]中:定义qdsub:
…:返回re.sub(“\,”,“.”,str(s)[2:-1])
.....:
在[173]中,x,y=genfromtxt('QD1_short.tsv',分隔符='\t',usecols=(0,1),
..:unpack=True,skip_header=13,converters={0:qdsub,1:qdsub},
…:跳过(页脚=2,数据类型=float)
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
1 x,y=genfromtxt('QD1_short.tsv',分隔符='\t',usecols=(0,1),
2 unpack=True,skip_header=13,converters={0:qdsub,1:qdsub},
---->3跳过(页脚=2,数据类型=float)
ValueError:要解压缩的值太多(应为2个)

也许这就是问题所在:

x, y = ge...
试一试

例如:

>>> a, b = [1,2,3,4]

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    a, b = [1,2,3,4]
ValueError: too many values to unpack
a,b=[1,2,3,4] 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 a、 b=[1,2,3,4] ValueError:要解压缩的值太多
也许这就是问题所在:

x, y = ge...
试一试

例如:

>>> a, b = [1,2,3,4]

Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    a, b = [1,2,3,4]
ValueError: too many values to unpack
a,b=[1,2,3,4] 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 a、 b=[1,2,3,4] ValueError:要解压缩的值太多
numpy.genfromtxt
说明:

解包:bool,可选

If True, the returned array is transposed, so that arguments may be unpacked 
using x, y, z = loadtxt(...)
我的最佳猜测是您应该尝试将
genfromtxt
封装在
loadtxt
中:

from numpy import loadtxt, genfromtxt
(...)

x, y = loadtxt(genfromtxt('QD1_short.tsv', delimiter='\t', usecols=(0, 1), 
                          unpack=True, skip_header=13, converters={0:qdsub, 1:qdsub}, 
                          skip_footer=2, dtype=float))
numpy.genfromtxt的

解包:bool,可选

If True, the returned array is transposed, so that arguments may be unpacked 
using x, y, z = loadtxt(...)
我的最佳猜测是您应该尝试将
genfromtxt
封装在
loadtxt
中:

from numpy import loadtxt, genfromtxt
(...)

x, y = loadtxt(genfromtxt('QD1_short.tsv', delimiter='\t', usecols=(0, 1), 
                          unpack=True, skip_header=13, converters={0:qdsub, 1:qdsub}, 
                          skip_footer=2, dtype=float))

问题出在转换器上,它显然应该返回一个浮点数

def qdsub(s):
    return float(re.sub('\,', '.', str(s)[2:-1]))

问题出在转换器上,它显然应该返回一个浮点数

def qdsub(s):
    return float(re.sub('\,', '.', str(s)[2:-1]))

嗯,
v=genfromtxt(…
肯定会返回一些东西,没有错误,问题是它是一个似乎无用的
数组([(“”),(“”),(“”),(“”),(“”),(“”),,,,…,
只使用一列,我得到一个整洁的浮点数组,我想得到其中两个。我以前用x,y=loadtxt做过(…但是这个tsv的页脚意味着我不能走这条路线,问题出在转换器上。将它修改为
返回re.sub('\','','','',str(s)[2:-1])
现在它工作得非常好。但奇怪的是,以前它在单列上是可以的。哦,好吧。
v=genfromtxt(…
当然会返回一些东西,没有错误,问题是它是一个看起来毫无用处的
数组([(“”),(“”,),(“”,),(“”,),…,
只使用一列,我得到一个整洁的浮点数组,我想得到其中两个。我以前用x,y=loadtxt做过这件事(…但是这个tsv的页脚意味着我不能走那条路线,问题出在转换器中。将其修改为
return re.sub('\,','.',str(s)[2:-1])
现在一切都很好。但奇怪的是,以前在单列上还可以。哦,好吧……显然我还不能回答我自己的问题,但问题已经解决了,请参阅用户答案评论显然我还不能回答我自己的问题,但问题已经解决了,请参阅用户答案评论