Как читать данные из txt-файла в строки и столбцы для средних расчетов Python

Поэтому я использую PIV (openPiv) для обработки изображений. После обработки и сохранения данных я получаю файл .txt с тремя столбцами x y V:

x: 44 88 132 44 88 132

y: 100 100 100 50 50 50

V: 5 0 2 3 6 7

Мне нужно нарисовать график x и V, но для одного и того же значения x у меня есть 2 значения V, поэтому я хочу усреднить по 2. Поэтому я пытаюсь написать код на python, который может считывать значение x в файл и вернуть все связанные значения V, чтобы я мог суммировать и усреднять их. Допустим, он читает x=44, переходит к файлу и находит его для x=44, v=5 и 3.

Помощь будет очень признательна Большое спасибо


person Edouardo    schedule 14.11.2019    source источник


Ответы (2)


fl=open("fileq.txt",'r+')
read_file=fl.read()
ls2=[]
x=0
y=1
V=2
ls_of_ls=[]
sepr=read_file.split('\n')
for items in sepr:
    items=items.split(':')[1]
    ls2.append(items)
for items in ls2:
    ls_of_ls.append(list(map(int,items.split())))
len_inp=len(ls_of_ls[x])
k=int(input("for value x: "))
print("V= ",end='')
for i in range(len_inp):
    if k==ls_of_ls[x][i]:
        print(ls_of_ls[V][i],end=" ")

я написал этот код в соответствии с заданным форматом в текстовом файле, т.е.

x: 44 88 132 44 88 132

y: 100 100 100 50 50 50

V: 5 0 2 3 6 7

просто замените файл q.txt своим файлом

Если вам нужен код для вертикального формата, я могу сделать это для вас.

person Pranay Patil    schedule 14.11.2019
comment
Большое спасибо, это было действительно полезно, я начал с аналогичной логики, но не знал, как действовать дальше (из-за моего ограниченного опыта в python); мой файл действительно имеет вертикальный формат, но не беспокойтесь, я попытаюсь заставить его работать сам (нужно улучшить свои навыки). Еще раз спасибо за помощь я очень ценю это - person Edouardo; 15.11.2019

import pandas as pd
file=pd.read_csv('file.csv', sep='\t')
velocity_along_x=file.groupby('x')['V'].mean()
velocity_along_x.plot()

Я нашел более простой способ, используя Pandas

person Edouardo    schedule 15.11.2019