【发布时间】:2019-03-17 02:11:45
【问题描述】:
我有一个带有数字的 .dat 文件。在第一行中,该文件有五列,在所有后续行中,它有四列。我希望能够使用 numpy 读取这个文件。目前尝试读取此文件时遇到以下错误:
In [3]: F1 = np.loadtxt(‘file.dat')
---------------------------------------------------------------------------
ValueError Traceback (most recent
call last)
<ipython-input-3-c0f31adaf29a> in <module>()
----> 1 F1 = np.loadtxt(‘file.dat')
/Users/usr/anaconda2/lib/python2.7/site-packages/numpy/lib/npyio.pyc in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin, encoding)
1090 # converting the data
1091 X = None
-> 1092 for x in read_data(_loadtxt_chunksize):
1093 if X is None:
1094 X = np.array(x, dtype)
/Users/usr/anaconda2/lib/python2.7/site-packages/numpy/lib/npyio.pyc in read_data(chunk_size)
1014 line_num = i + skiprows + 1
1015 raise ValueError("Wrong number of columns at line %d"
-> 1016 % line_num)
1017
1018 # Convert each value according to its column and store
ValueError: Wrong number of columns at line 2
如何使用 python 读取文件中除第一行之外的所有行? 我附上了一个示例文件here。
此外,此文件的第一列(减去第一行)有 n^2 行(在示例中,我有 n=3,列的条目是 1,2,3,4,5, 6,7,8,9)。我想读取第一列(减去第一行)并将其保存为形状为 (n,n) 的文本文件(即文本文件应该有 n 行和 n 列)。也就是说,我希望保存的矩阵具有以下顺序的条目:
1.0 2.0 3.0
4.0 5.0 6.0
7.0 8.0 9.0
如果能得到帮助,我将不胜感激。
【问题讨论】:
-
genfromtxt在这方面稍微好一点,但它仍然需要正确数量的分隔符,这是默认white-space的一个大问题。usecols可用于将负载限制为最小列数。你也可以告诉它跳过坏行。 -
您可以逐行读取文件,将其拆分,并在行太短的情况下执行自己的更正。
-
hpaulj:你能举个例子吗?我是 python 新手,我无法实施您的建议。我会很感激的。
标签: python arrays python-2.7 numpy