Быстрый ответ:
arrays = []
for line in open(your_file): # no need to use readlines if you don't want to store them
# use a list comprehension to build your array on the fly
new_array = np.array((array.float(i) for i in line.split(' ')))
arrays.append(new_array)
Если вы часто обрабатываете данные такого типа, модуль csv поможет.
import csv
arrays = []
# declare the format of you csv file and Python will turn line into
# lists for you
parser = csv.reader(open(your_file), delimiter=' '))
for l in parser:
arrays.append(np.array((array.float(i) for i in l)))
Если вы чувствуете себя диким, вы можете даже сделать это полностью декларативным:
import csv
parser = csv.reader(open(your_file), delimiter=' '))
make_array = lambda row : np.array((array.float(i) for i in row))
arrays = [make_array(row) for row in parser]
И если вы действительно хотите, чтобы ваши коллеги ненавидели вас, вы можете сделать один вкладыш (НЕ ПИФОНИЧЕСКИЙ ВСЕ: -):
arrays = [np.array((array.float(i) for i in r)) for r in csv.reader(open(your_file), delimiter=' '))]
Сняв всю плиту котла и его гибкость, вы можете получить чистый и хорошо читаемый вкладыш. Я бы не стал его использовать, потому что мне нравится возможность использовать csv
, но это может быть хорошо. Здесь серая зона, поэтому я бы не сказал, что это Pythonic, но она определенно удобна.
arrays = [np.array((array.float(i) for i in l.split())) for l in open(your_file))]