在下面的代码片段,我该如何避免计算下面numpy的变量mask
,在程序Get_mask
,Get_K_Shell_Te
等zbar
,te
,ro
和rvol
?这些变量是大型数组,我必须定义至少六个重用它们的过程。看起来我所做的并不是一个好主意,而且速度很慢。如何避免在此python类中重新计算变量?
import numpy as np
# this computes various quantities related to the shell in a object oriented way
class Shell_Data:
def __init__(self, data):
self.data = data
def Get_mask(self):
zbar=self.data['z2a1']
y=self.data['y']*1000
mask= np.logical_and(zbar >= 16 ,zbar<= 19 )
return self.mask
def Get_Shell_Te(self):
self.mask =self.Get_mask()
te =self.data['te'][self.mask]
ro =self.data['ro'][self.mask]
rvol =self.data['rvol'][self.mask]
self.Shell_Te=np.sum(te*ro/rvol)/(np.sum(ro/rvol))
print "Shell Temperature= %0.3f eV" % (self.Shell_Te)
return self.Shell_Te
def Get_Shell_ro(self):
mask =self.Get_mask()
te =self.data['te'][mask]
ro =self.data['ro'][mask]
rvol =self.data['rvol'][mask]
radk =self.data['radk'][mask]
self.Shell_ro=np.sum(radk*ro/rvol)/np.sum(radk/rvol)
return self.Shell_ro
如何在'__init__'方法中计算它们并将它们存储在对象中? – JohanL
将简单地在__init__中定义'zbar','ro'和'rvol',使它们可以在'Get_Shell_ro'中访问? – wander95
您需要指定'self.ro'并使用相同的语法访问它们。 – JohanL