Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 7, 2010 17:40:05

Rumato
От:
Зарегистрирован: 2010-10-03
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение пар чисел из файла

здравствуйте, извините за ламерский вопрос, просто с python-ом только начинаю разбираться, впрочем как и вообще с программированием. Есть файл, где попарно распологаются данные - числа(в два столбца), по которым потом после обработки нужно строить график, нужно считать эти числа во вложенный список, состоящий из кортежей пар чисел. Как я понимаю нужно считать из файла данные - получится как-бы строковой тип данных, затем разбить их на строки, а потом строки разделить по два числа, т.к. всего да столбца, вот что я навоял, код неработает и я знаю, что так лучше не писать, подскажите, пожалуйста в чём ошибка и если вообще всё раскритикуете, то буду только благодарен.)

lines = open('/SPL11/c1.DAT',"r").readlines()
pairs = []
for line in lines:
words = line.split()
for word in words:
n1, n2 = word.split()
n1 = float(n1)
n2 = float(n2)
pair = (n1 , n2)
pairs.append(pair)
infile.close()
print pair



Офлайн

#2 Окт. 7, 2010 17:57:34

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Чтение пар чисел из файла

Цикл for word in words лишний. Достаточно n1, n2 = line.split()



Офлайн

#3 Окт. 7, 2010 18:08:25

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Чтение пар чисел из файла

нет сил пинать, извините. попробуйте следующий код:

result = []
with open(...) as f:
for line in f:
result.append(map(float, line.split()))
## или короче
with open(...) as f:
result = [map(float, line.split()) for line in f]
если он делает т о, что Вам нужно, загляните в любой букварь по питону и все сразу станет понятно



Офлайн

#4 Окт. 7, 2010 18:22:18

Rumato
От:
Зарегистрирован: 2010-10-03
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение пар чисел из файла

большое спасибо, помогло))



Офлайн

#5 Окт. 7, 2010 20:49:38

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Чтение пар чисел из файла

Я делаю несколько иначе

import numpy
data = numpy.genfromtxt(“myfile.txt”)

см пример http://www.scipy.org/Cookbook/InputOutput
потом еще несколько строчек для рисования графика

import matplotlib.pyplot as plt
plt.plot(data,data)
plt.show()

Зачем изобретать велосипд - он уже есть и не один (в данном примере нужно поставить пакет matplotlib)



Отредактировано (Окт. 7, 2010 20:54:29)

Офлайн

#6 Окт. 8, 2010 09:55:14

Rumato
От:
Зарегистрирован: 2010-10-03
Сообщения: 93
Репутация: +  0  -
Профиль   Отправить e-mail  

Чтение пар чисел из файла

да, конечно, но мне не просто нужно построить по этим данным график, а сначала отбработать их методом сплайнов. У нас на парах в универе делают на fortran - е + gnuplot, а я вот решил заморочиться с питоном))) и спасибо за помощь..)



Офлайн

#7 Окт. 8, 2010 20:48:12

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Чтение пар чисел из файла

рад был помочь

Код:

from scipy.interpolate import UnivariateSpline
spline = UnivariateSpline(data(:,0),data(:,1),s=1)
v=spline(3.5)

:)

питон люблю за большое число запчастей.



Отредактировано (Окт. 9, 2010 17:47:15)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version