Python将值行解压为两个数组

Python将值行解压为两个数组,python,python-2.7,numpy,unpack,Python,Python 2.7,Numpy,Unpack,我正在编写一个Python脚本,逐行读取一个输入文件,每个文件包含20个值。我尝试将第一个存储在1D数组中,其他19个存储在第二个数组中 它们被定义为: x = numpy.zeros((n_lines)) y = numpy.zeros((n_lines,19)) n_line输入文件中的行数。 我正在和你一起读 for i,line in enumerate(open(infile)): x[i],y[i] = line.split(' ') 但我遇到了一个太多值无法解包的错误

我正在编写一个Python脚本,逐行读取一个输入文件,每个文件包含20个值。我尝试将第一个存储在1D数组中,其他19个存储在第二个数组中

它们被定义为:

x = numpy.zeros((n_lines))
y = numpy.zeros((n_lines,19))
n_line输入文件中的行数。 我正在和你一起读

for i,line in enumerate(open(infile)):
    x[i],y[i] = line.split(' ')
但我遇到了一个
太多值无法解包的错误

我现在把它存储在一个大数组中,然后最后把它分成两个。我没有使用
line.split(“”)[0],line.split(“”)[1://code>,因为它看起来不适合拆分两次

有没有一种整洁的(蟒蛇)解包方法


(如果有必要的话,我使用的是Python 2.7)

您正确地完成了最后一部分(创建一个数组,然后对其进行切片),但是第一部分应该使用,如下所示:

big_array = numpy.genfromtxt(infile) ## probably with more arguments
x, y = numpy.split(big_array, [1])
如果需要更有效的解决方案,另一种选择是:

big_array = numpy.empty((nlines, 20))

for i,line in enumerate(open(infile)):
    big_array[i,:] = line.split()

x, y = numpy.split(big_array, [1])
最后,从行直接解包到前
x
y
阵列可以如下所示:

splitted = line.split();
x[i], y[i,:] = splitted[0], splitted[1:]

编码肯定更快,但正如这里所解释的:大规模数据导入效率低下。然后您可以创建一个整体的大数组,然后在其上使用
numpy.split()
,如图所示。这能解决问题吗?我的问题可能不够清楚,我相信你的拆分解决方案可能比我现在使用的更好。我很想知道从20解包到1+19的正确方法,而不是如何读取文件或拆分数组。顺便说一句,谢谢你的意见!从20解包到1+19的过程如下:
1,19=20[0],20[1:][/code>。所以你可以这样做,我想:
x[I],y[I,:]=splitted[0],splitted[1:
,因为它们分别有相同的形状。@Learning-is-a-mess-3。有东西添加了这个功能,
one,*think=a