ich habe mich hier angemeldet weil ich ein Problem mit numpy habe.
Es geht um Apparaturen die thermische Energie liefern, an bestimmten Zeitpunkten kann man diese aber nicht nutzen. Ich möchte also einen Wirkungsgrad von genutzter zu produzierter Energie berechnen. Nun habe ich aber bemerkt das etwas nicht stimmen kann.
Hier also stark vereinfacht das Programm:
Code: Alles auswählen
import numpy as np
t = 1000
m = 12
output = (1200*np.random.rand(t,m))**2
usable_output = output.copy()
python_result = np.zeros(m)
for j in range(m):
nutzen = 0.0
aufwand = 0.0
for i in range(t):
if np.random.rand(1)>0.9:
usable_output[i,j] = 0
nutzen += usable_output[i,j]
aufwand += output[i,j]
python_result[j] = nutzen/aufwand
eta_calc = python_result
eta_calc1 = np.sum(usable_output,axis=0)/np.sum(output,axis=0)
eta_calc2 = np.mean(usable_output,axis=0)/np.mean(output,axis=0)
eta_calc3 = np.mean(usable_output/output,axis=0,dtype=np.float64)
Dies hat nichts mit dem "bug" in np.mean() und np.sum() zu tun, was ich mit "dtype = np.float64" ausgeschlossen habe.
Kann mir hierbei jemand helfen?
Wie berechne ich (besonders bei sehr großen float arrays) den korrekten Mittelwert?
Vielen Dank schon mal,
-flabowski