用NumPy从文件读取非均匀数据到数组

14 投票
4 回答
28396 浏览
提问于 2025-04-16 11:40

假设我有一个文本文件,内容大概是这样的:

33 3
46 12
23 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15 25 16 26 16 27 16 28 16 29 16
33 17 33 18 33 19 34 17 34 18 34 19 35 17 35 18 35 19 36 19
41 32 41 33 42 32 42 33

我想把每一行读入一个单独的整数数组,像这样(伪代码):

for line in textfile:  
    currentArray = firstLine  
    do stuff with currentArray

在第一次循环中,currentArray 会变成

array([33, 3])

在第二次循环中,currentArray 会变成

array([46, 12])

直到最后一次循环,currentArray 会变成

array([41, 32, 41, 33, 42, 32, 42, 33])

基本上,我想要的功能是 numpy 的 loadtxt 函数:

currentArray = loadtxt('scienceVertices.txt', usecols=() )

不过我想用行号来指定,而不是列,比如:

currentArray = loadtxt('scienceVertices.txt', userows=(line) )

4 个回答

3

你还可以使用 numpy.fromstring() 这个方法。

for line in f:
    a = numpy.fromstring(line.strip(), dtype=int, sep=" ")

或者,如果你想要更多的灵活性,甚至可以使用 numpy.loadtxt()

for line in f:
    a = numpy.loadtxt(StringIO.StringIO(line), dtype=int)

对于很长的行,这些方法的表现会比其他答案中的Python代码更好。

6
for line in textfile:
  a = np.array([int(v) for v in line.strip().split(" ")])
  # Work on your array

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

17

这里有一句简单的代码:

arrays = [np.array(map(int, line.split())) for line in open('scienceVertices.txt')]

arrays 是一个包含多个 numpy 数组的列表。

撰写回答