Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 15

Считывание данных txt неверное

22.05.2024, 12:45. Показов 519. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, пожалуйста, почему не правильно считываются данные с txt ? соответственно не работает вся программа. Если произвольно задаю y, то работает
data.txt

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import pathlib
 
## функция - экспериментальные данные
beta_true = np.array([1, 1.3, 2, 1, 2])
def test(x, beta):
    return beta[0]*np.sin(x*beta[1]) + beta[2]*np.sin(x*beta[3])  ##ФУНКЦИЯ ДЛЯ ОПИСАНИЯ 
#  residuals
def residuals(y_exp, beta): 
    return y_exp - test(x_calc, beta)
 
m = 20 #число эксп точек
x_calc = np.linspace(0, 80, num=m)
print(x_calc)
 
y_true = test(x_calc, beta_true)
print(y_true)
 
y_exp2=list(map(float, pathlib.Path("D:\\data.txt").read_text().split(",")))
y_exp = y_exp2.replace('\n',' ')
#print(y_exp)  # вот искомые строки!
 
## Отрисовка
plot, ax1 = plt.subplots()
ax1.plot(x_calc, y_exp, 'b.', label='"Экспериментальные данные "')
ax1.plot(x_calc, y_true, 'k--', label= 'Расчет с использованием алгоритма Левенберга — Марквардта', alpha=0.3, linewidth=2.5 )
ax1.set_xlim([0, 80]) ##ось по х
ax1.set_ylim([-1000, 1000])  ##ось по y
def trace(y_calc):
    ax1.plot(x_calc, y_calc, 'r-', alpha=0.3)
    
def trace(y_calc):
    ax1.plot(x_calc, y_calc, 'r-', alpha=0.3)
 
 
 
lam = 0.1 #damping 
alpha = 0.3 #step length for direction vector
num_its = 300 #кол-во тераций
 
 
## начальные параметры
n = np.shape(beta_true)[0] 
beta_0 = np.reshape(np.zeros(n), (n, 1)) 
r_0 = np.reshape(residuals(y_exp, beta_0), (len(y_exp), 1)) 
beta_1 =beta_0 + 0.1*np.random.rand(n,1)
r_1 = np.reshape(residuals(y_exp, beta_1), (len(y_exp), 1))
r_old = np.copy(r_0)
r_k = np.copy(r_1)
beta_old = np.copy(beta_0)
beta_k = np.copy(beta_1)
broyden_old = np.zeros((m,n))
ax1.plot(x_calc, test(x_calc, beta_k), 'r-', alpha=0.3, label='Итерации')
#ax1.plot(x_calc, y_true, 'k--', label= 'fit: beta[0]=%5.3f, beta[1]=%5.3f, beta[2]=%5.3f, beta[3]=%5.3f'% tuple(beta_k), alpha=0.3, linewidth=2.5 )
 
 
## начало цикла
j=0
while j<=num_its:
    t_k = r_k - r_old  #calculate difference in residuals
    s_k = beta_k - beta_old #calculate difference in parameters
    y_calc = test(x_calc, beta_k) #calculate iteration trace for plotting
    trace(y_calc) #add trace to plot
 
    broyden_k = broyden_old + np.matmul((t_k - np.matmul(broyden_old, s_k))/np.sum(s_k**2), s_k.T) 
    jTj = np.matmul(broyden_k.T, broyden_k) 
    p = np.linalg.solve(jTj + lam*jTj*np.eye(n), -np.matmul(broyden_k.T, r_k))
    beta_old = np.copy(beta_k)
    r_old = np.copy(r_k)
    broyden_old = np.copy(broyden_k)
    beta_k = beta_k + alpha*p
    r_k = np.reshape(residuals(y_exp, beta_k), (len(y_exp), 1))
    #print(np.sum(r_k**2), beta_k)
    j+=1
    print(f"Запись: {num_its}, {beta_k}")
             
 
ax1.legend()
plt.show()
Traceback (most recent call last):
File "d:\lm_exp_sborka.py", line 25, in <module>
y_exp2=list(map(float, pathlib.Path("D:\\data.txt").read_text() .split(",")))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: could not convert string to float: '0\n0\n0\n0\n0\n0\n0\n52\n189\n142\n-11\n188\n139\n116\n167\n155\n-165\n-49\n14\n59'
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.05.2024, 12:45
Ответы с готовыми решениями:

Считывание данных по столбцам из txt-файла
Добрый день, с недавних пор программирую на python и образовался такой вопрос. У меня есть txt-файл, в котором находятся данные в...

Считывание данных с файла .txt и вывод данных на экран
Нужно написать программу на языке Python, для считывания из файла, где следующим образом написан текст: Новаков Никита Викторович ...

Считывание txt в кодировке utf-8
Возникла проблема при считывании текстовых файлов в кодировке utf-8. Вернее, считывать-то считывает, однако почему-то дальше программа...

5
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.05.2024, 13:14
Цитата Сообщение от svboyko Посмотреть сообщение
split(",")
Чето в файле ни одной запятой не увидел
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
with open('data.txt', 'r') as f:
    lst = list(map(float, f.read().split('\n')))
print(lst)
# [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 52.0, 189.0, 142.0, -11.0, 
# 188.0, 139.0, 116.0, 167.0, 155.0, -165.0, -49.0, 14.0, 59.0]
1
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
22.05.2024, 14:10
Цитата Сообщение от svboyko Посмотреть сообщение
почему не правильно считываются данные с txt ?
потому, что кто-то неправильно написал код считывания
list(map(float, pathlib.Path("D:\\data.txt").read_text() .split(",")))
- вот это, кто Вам написал?
Сам файл состоит из отдельных строк, в каждой по одному числу. Никаких запятых в нем нет. Почему же тогда Вы его разделяете по запятым?
.split() будет вполне работать
2
0 / 0 / 0
Регистрация: 22.03.2020
Сообщений: 15
22.05.2024, 17:36  [ТС]
y_exp=list(map(float, pathlib.Path("D:\\data.txt").read_text() .split(" ")))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: could not convert string to float: '0\n0\n0\n0\n0\n0\n0\n52\n189\n142\n-11\n188\n139\n116\n167\n155\n-165\n-49\n14\n59'

Про запятую "протупила". Но все же почему не верно считывает.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
22.05.2024, 17:42
Лучший ответ Сообщение было отмечено svboyko как решение

Решение

Из сплита пробел убери, елки-палки. Или мой код посмотри
2
Любознательный
 Аватар для YuS_2
7404 / 2254 / 360
Регистрация: 10.03.2016
Сообщений: 5,213
22.05.2024, 19:47
Цитата Сообщение от svboyko Посмотреть сообщение
.split(" ")
Цитата Сообщение от YuS_2 Посмотреть сообщение
.split()
найдите 10 отличий
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2024, 19:47
Помогаю со студенческими работами здесь

Считывание данных из txt файла
Здравствуйте, извините за такие банальные вопросы, но уже пару дней не получается считать данные из файла txt. Точнее считать данные...

Считывание данных из txt в матлаб
Здравствуйте! Имеется текстовый файл с данными в след. виде: 2459044.500000000 = A.D. 2020-Jul-14 00:00:00.0000 TDB X =...

Считывание данных из файла .TXT
Подскажите пожалуйста, как в C# организовать считывание данных из файла и после из обработки загнать в другой файл? пример для графов: ...

Считывание данных из файла .TXT
Подскажите пожалуйста, как в C# организовать считывание данных из файла и после из обработки загнать в другой файл? пример для графов: ...

Считывание данных из txt файла/СИ
После изменения файлов in1, in2, in3 c исходными данными, программа начинает выдавать ошибки. Подскажите, пожалуйста, в чем может быть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru