Gå til innhold

Anbefalte innlegg

Skrevet

Skal lage en graf etter en liste med noen tusen verdier. Kode:

 

 

from matplotlib import pyplot

 

filename = "data_9.dat"

x_list = []

y_list = []

fp = open(filename)

for line in fp:

var1, var2 = line.split(",")

x = float(var1)

y = float (var2)

x_list.append(x)

y_list.append(y)

type_of_plot = "r--"

pyplot.plot(x_list, y_list, type_of_plot)

pyplot.show()

 

 

 

x og y er uavhengige verdier. Problemet er at det ikke blir tegnet noen graf, men at det blir tegnet opp som et søylediagram. (Målet er å få regnet ut integralet av grafen).

 

Tilleggsspørsmål: Har noen "korrupte" verdier i datalisten som må fjernes. Disse er merket med "-". Tips om lett måte å fjerne disse på?

Videoannonse
Annonse
Skrevet

Har fått ordnet graf og korrupte verdier nå, og kommet til ny problemstilling.

Variabelen x står for timer, og y står for hastighet (måler hvor mye vann som renner igjennom en turbin). Disse variablene blir jo da lagret i en liste.

 

Er det en enkel mulighet i python for å legge sammen alle variablene i denne listen for så å finne gjennomsnittet?

 

(bump)

Skrevet

Har fått ordnet graf og korrupte verdier nå, og kommet til ny problemstilling.

Variabelen x står for timer, og y står for hastighet (måler hvor mye vann som renner igjennom en turbin). Disse variablene blir jo da lagret i en liste.

 

Er det en enkel mulighet i python for å legge sammen alle variablene i denne listen for så å finne gjennomsnittet?

 

(bump)

 

list = array( den listen din )

 

mean = sum(list)/len(list)

Skrevet (endret)

Posten til ChappyD gir deg gjennomsnittet.

Husk dette med integer division i Python 2.x.

 

>>> lst = [1,2,3,4]
>>> sum(lst) / len(lst)
2

Hmm skulle ikke dette ha vært 2.5?

Hadde det vært float verdier i listen hadde resultatet blitt 2.5

>>> lst = [1.0,2.0,3.0,4.0]
>>> sum(lst) / len(lst)
2.5

 

Greit og bare bruke "from __future__ import division"

>>> from __future__ import division
>>> lst = [1,2,3,4]
>>> sum(lst) / len(lst)
2.5

Python 3.x har forandert litt på dette,med "from __future" henter vi bare "division" opplegget til Python 3.x.

Endret av SNIPPSAT
Skrevet

Takker, skal få sjekket dette iløpet av morgendagen. Det er float verdier, så det skal ikke være noe problem.

  • 2 uker senere...
Skrevet (endret)

Foran å bruke from..future..import vil jeg heller annbefale å kaste summen til float, så lenge det ikke er noe som krever veldig stor hastighet (evt. itereres over), for det er relativt dyrt å kaste int til float eller vice versa..

>>> lst = [1,2,3,4]
>>> float(sum(lst)) / len(lst)
2.5

Endret av warpie

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...