python3. числа из файла

Питонисты есть? ;)

Имеется текстовый файл. Числа через пробелы, количество и длина строк непредсказуемы (т.е. желательно буферизовать по-минимуму).

Как просто реализовать чтение чисел типа file >> value на плюсах?
Вариант
for line in file:
    for val in line.split():
        a=float(val)
выглядит неоптимальным.
такие дела.
а чем вас собсна такой вариант не устраивает?)
Ну можно еще что то вроде такого:
with open(filename,'r') as file:
        a = numpy.array([line.split() for line in file], dtype=float)
Но для этого нужно импортировать numpy
Да и запись будет матричной
PGP 0x31361F01
arcanisrepo
Спасибо за быстрый ответ! Пихать предполагается именно в numpy array.

Вариант не то что-бы не устраивает, но т.к. файл может достигать сотен МБ, то я не уверен в скорости данного мероприятия и в потреблении памяти.

В Вашем примере какой шейп получится? (lines, num_in_line) ?
Разбивка по строками может не совпадать с необходимым шейпом. Я хотел читать в одномерный массив, а потом решейпить.

Раз Вы спец, то вот ещё вопрос. У ndarray есть опция
order : {‘C’, ‘F’}, optional
Row-major or column-major order.
Вроде понятно о чём, но не ясно что именно имеется ввиду ;) Я так понимаю, что речь идёт об упаковке рядами или колонками? Чему тогда что соответствует?
такие дела.
cucullus
Раз Вы спец, то вот ещё вопрос.
Ну я бы не сказал, что спец, скорее начинающий-любитель :D
cucullus
В Вашем примере какой шейп получится? (lines, num_in_line) ?
Разбивка по строками может не совпадать с необходимым шейпом. Я хотел читать в одномерный массив, а потом решейпить.
Угу, именно такая разметка и получится - каждая новая строка пойдет в новую строку массива. Самый простой вариант - при считывании сделать команду
a=numpy.array([line.split() for line in file], dtype=float).reshape(1, -1)
тогда все забьется в одну строку.
cucullus
У ndarray есть опция
order : {‘C’, ‘F’}, optional
Row-major or column-major order.
Вроде понятно о чём, но не ясно что именно имеется ввиду ;) Я так понимаю, что речь идёт об упаковке рядами или колонками? Чему тогда что соответствует?
вроде же просто порядок строк или столбцов. А это в какой функции? Вообще, в фортране (флаг F) массивы указываются, как array, однако в сях (флаг С соответственно) строки со столбцами перепутаны - т.е. array. Соответственно, если вы имеете матрицу, которую хотите переконвертировать в массив, то предлагается воспользоваться функцией order для выбора индексации. Дефолт C обычно. Как то так)
PGP 0x31361F01
arcanisrepo
еще одни нубский вопрос, хоть и немного не по теме.
как установить numpy, scipy, matploit так, чтобы они импортировались в python 3.3 ?
cagey
еще одни нубский вопрос, хоть и немного не по теме.
как установить numpy, scipy, matploit так, чтобы они импортировались в python 3.3 ?
Т.е. питон 3.4 не устраивает? А как ставите 3.3?
 
Зарегистрироваться или войдите чтобы оставить сообщение.