假设我有一个看起来像这样的文件
text a
bla bla
1 2 3
4 5 6
text b
bla
7 8 9
10 11 12
text c
bla bla bla
13 14 15
16 17 18
我正在尝试仅提取数字数组并将它们放入numpy
数组中:
array([[ 1, 2, 3,
4, 5, 6,],
[ 7, 8, 9,
10, 11, 12],
[ 13, 14, 15,
16, 17, 18]])
我尝试使用np.genfromtxt('test.txt',usecols=[0,1,2],invalid_raise=False)
array([[ 1., 2., 3.],
[ 4., 5., 6.],
[ 7., 8., 9.],
[ 10., 11., 12.],
[ nan, nan, nan],
[ 13., 14., 15.],
[ 16., 17., 18.]])
但它不会创建子数组并将文本转换为nans
。有没有更好的方法呢?
答案 0 :(得分:1)
您可以使用{/ 1}}
itertools.groupby
答案 1 :(得分:0)
你可能不得不诉诸一些"手册"解析。假设这里给出的形式是一个解决方案(当然还有其他解决方案):
import numpy as np
def parser(fname):
with open(fname) as fh:
for i, line in enumerate(fh):
p = i % 7
if p not in (5, 6):
continue
yield line.rstrip()
a = ' '.join(parser(filename))
arr = np.fromstring(a, dtype=int, sep=' ')
arr = arr.reshape((-1, 6))
print(arr)