【发布时间】:2017-06-30 20:19:59
【问题描述】:
我有一个看起来像这样的文件:
some text
the grids are
3 x 3
more text
matrix marker 1 1
3 2 4
7 4 2
9 1 1
new matrix 2 4
9 4 1
1 3 4
4 3 1
new matrix 3 3
7 2 1
1 3 4
2 3 2
.. 文件继续,几个 3x3 矩阵以相同的方式出现。每个矩阵都以具有唯一 ID 的文本开头,尽管 ID 对我来说并不是特别重要。我想创建这些矩阵的矩阵。我可以使用 loadtxt 来做到这一点吗?
这是我最好的尝试。此代码中的 6 可以替换为从 6 开始并按矩阵中的行数递增的迭代变量。我以为skiprows 会接受一个列表,但显然它只接受整数。
np.loadtxt(fl, skiprows = [x for x in range(nlines) if x not in (np.array([1,2,3])+ 6)])
TypeError Traceback (most recent call last)
<ipython-input-23-7d82fb7ef14a> in <module>()
----> 1 np.loadtxt(fl, skiprows = [x for x in range(nlines) if x not in (np.array([1,2,3])+ 6)])
/usr/local/lib/python2.7/site-packages/numpy/lib/npyio.pyc in loadtxt(fname, dtype, comments, delimiter, converters, skiprows, usecols, unpack, ndmin)
932
933 # Skip the first `skiprows` lines
--> 934 for i in range(skiprows):
935 next(fh)
936
【问题讨论】:
-
一个电话是做不到的。我建议使用您自己的文件
readlines读取该文件,并将简单的数字块(具有一致列数的行)传递给loadtxt,甚至直接解析它们。那些由 9 个数字组成的块应该很容易解析。 -
@hpaulj 如何将数字块传递给
loadtxt?您的建议基本上就是我在发布的尝试中尝试做的事情。 -
另外,请记住这是一个简化的问题。我的真实案例有 30x30 矩阵。
-
尝试传递一个字符串/行列表。