Problem mit <=

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kalon
User
Beiträge: 2
Registriert: Samstag 23. November 2013, 22:17

Hallo ich habe mir folgenden Code überlegt. Ein gesuchtes Ergebnis ist taum1. Das ist das Maximum der Funktion lnl. Dann soll bestimmt werden bei welchem Wert für tau lnl jeweils um 0.5 vom Maximum abweicht. Eigentlich würde ich erwarten, dass in der Variablen df=lnl-lmax>=-0.5 alle Werte der Funktion lnl drin stecken, die grösser als -0.5 sind. Wenn ich mir angucke was in der Variablen df drinnsteckt sind da aber nur noch nullen eingetragen, anstatt zahlen. ich brauche aber alle Zahlen die die Bedingung erfüllen. Für tauf sollte dann ein Wert ungleich null herauskommen. Es wäre schön wenn mir jemand sagen könnte, wo mein Fehler liegt.

Code: Alles auswählen

from pylab import *
import scipy.stats as stats
hold(True)
tautrue=5
t=stats.expon(0.0,tautrue).rvs(1000)
tau = frange(3.5,6.5,0.03)
n=len(t)
lnl =-sum(t)/tau-n* log(tau)
lmax=max(lnl)
taum1=tau[argmax(lnl)]
print taum1
df=lnl-lmax>=-0.5
taut=min(df)
tauh=max(df)
tauf=(taut - tauh)/2
Zuletzt geändert von Anonymous am Samstag 23. November 2013, 22:47, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
BlackJack

@kalon: In `df` sind keine Nullen sondern das ist ein Array mit Wahrheitswerten die angeben ob der Wert im Array ``lnl - lmax`` grösser als -0,5 ist:

Code: Alles auswählen

In [90]: df
Out[90]: 
array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False], dtype=bool)
Wolltest Du `df` vielleicht noch als Index verwenden?

Code: Alles auswählen

In [91]: lnl[df]
Out[91]: 
array([-2593.07415042, -2592.92839067, -2592.82293377, -2592.75679974,
       -2592.72903545, -2592.73871375, -2592.78493262, -2592.86681439,
       -2592.98350494, -2593.13417298])
Das widerspricht jetzt natürlich noch Deiner im Text formulierten Erwartung das die Werte grösser -0,5 sind, aber dann hättest Du zur Bestimmung von `df` vielleicht nicht `lmax` abziehen sollen.
kalon
User
Beiträge: 2
Registriert: Samstag 23. November 2013, 22:17

BlackJack hat geschrieben:@kalon: In `df` sind keine Nullen sondern das ist ein Array mit Wahrheitswerten die angeben ob der Wert im Array ``lnl - lmax`` grösser als -0,5 ist:

Code: Alles auswählen

In [90]: df
Out[90]: 
array([False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False,  True,  True,
        True,  True,  True,  True,  True,  True,  True,  True, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False, False, False, False, False, False, False, False,
       False, False], dtype=bool)
Wolltest Du `df` vielleicht noch als Index verwenden?

Code: Alles auswählen

In [91]: lnl[df]
Out[91]: 
array([-2593.07415042, -2592.92839067, -2592.82293377, -2592.75679974,
       -2592.72903545, -2592.73871375, -2592.78493262, -2592.86681439,
       -2592.98350494, -2593.13417298])
Das widerspricht jetzt natürlich noch Deiner im Text formulierten Erwartung das die Werte grösser -0,5 sind, aber dann hättest Du zur Bestimmung von `df` vielleicht nicht `lmax` abziehen sollen.
Ja vielen Dank, ich denke das wars :-)
Antworten