用NumPy从文件读取非均匀数据到数组
假设我有一个文本文件,内容大概是这样的:
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 个回答
你还可以使用 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代码更好。
for line in textfile:
a = np.array([int(v) for v in line.strip().split(" ")])
# Work on your array
当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。
这里有一句简单的代码:
arrays = [np.array(map(int, line.split())) for line in open('scienceVertices.txt')]
arrays
是一个包含多个 numpy 数组的列表。