从文本文件中读取特定行作为numpy数组

3
我将尝试读取一个txt文件,其格式如下:
[text]
[text]
[text]
1 0 
4 5
3 0 0
[text]
.
.
.

我需要将第4到6行读取为numpy数组。到目前为止,我已经得到:

 lines=[]
 with open('filename', "r") as f:
     for i, line in enumerate(f):
         if i>=3 and i<=5:
             lines.append(line)
 lines = np.array(lines)

这会将每个必需的行读取为一个元素,但我需要将数字放在单独的列中作为单独的元素。有没有什么解决方法?
谢谢。

在空格上分割行吗? - hpaulj
但是我无法将其设置为numpy数组。出现错误:“使用序列设置数组元素”。 - Afzal
2
你的最后一个数字行有3个数字,其他的只有2个?你确定要这样吗? - hpaulj
3个回答

2

您需要将字符串转换为整数:

lines=[]
with open('filename', "r") as f:
    for i, line in enumerate(x.split('\n')):
        if i>=3 and i<=5:
            lines.append([int(y) for y in line.split()])

lines = np.array(lines)
print type(lines)

2
你可以使用itertools.islice()来选择行,并将结果提供给Numpy的genfromtxt()函数:
from itertools import islice
import numpy as np

with open('test.txt') as lines:
    array = np.genfromtxt(islice(lines, 3, 6))

print array

0
你可以在numpy中使用skiprowsmax_rows来实现这个操作。
array = np.loadtxt(filename,skiprows=3,max_rows=3)

max_rows: 读取跳过 skiprows 行之后想要读取的行数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接