Gå til innhold

Anbefalte innlegg

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å?

Lenke til kommentar
Videoannonse
Annonse

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)

Lenke til kommentar

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)

Lenke til kommentar

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
Lenke til kommentar
  • 2 uker senere...

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
Lenke til kommentar

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...