Python将值行解压为两个数组
我正在编写一个Python脚本,逐行读取一个输入文件,每个文件包含20个值。我尝试将第一个存储在1D数组中,其他19个存储在第二个数组中 它们被定义为: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(' ') 但我遇到了一个太多值无法解包的错误
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