[英]Is there a way to simplify multiple list comprehensions?
我的代碼中有這樣的內容:
mean_realp = [[df[(df['fvpwm'] == v) & (df['gppwm'] == w)]['P'].mean() for v in uvpwms] for w in upwms]
mean_setp = [[df[(df['fvpwm'] == v) & (df['gppwm'] == w)]['pressure setpoint [mbar]'].mean() for v in uvpwms] for w in upwms]
stddev_realp = [[df[(df['fvpwm'] == v) & (df['gppwm'] == w)]['P'].std() for v in uvpwms] for w in upwms]
stddev_pbefore = [[df[(df['fvpwm'] == v) & (df['gppwm'] == w)]['Pbefore [mbar]'].std() for v in uvpwms] for w in upwms]
maxes_realp = [[df[(df['fvpwm'] == v) & (df['gppwm'] == w)]['P'].max() for v in uvpwms] for w in upwms]
mins_realp = [[df[(df['fvpwm'] == v) & (df['gppwm'] == w)]['P'].min() for v in uvpwms] for w in upwms]
有沒有一種方法可以簡化此過程,而無需使用外部循環? 我沒有反對他們的任何東西,但是必須有一個更優雅的解決方案...
對於后一部分
for v in uvpwms] for w in upwms]
我想不到有什么比外部循環更簡單的了。
但是內在部分呢? 是否有一些更簡單的解決方案(例如lambda表達式)?
進行輔助功能以強調和參數化差異。 這是一個開始,您可能應該找到一個更合適的名稱,以更好地與數據集的真實含義聯系起來:
def transformMatrix(matrix, label, transformer):
return [[df[transformer((df['fvpwm'] == v) & (df['gppwm'] == w)][label]) for v in matrix] for w in matrix]
mean_realp = transformMatrix(upwms, 'P', lambda elements: elements.mean())
mean_setp = transformMatrix(upwms, 'pressure setpoint [mbar]', lambda elements: elements.mean())
stddev_realp = transformMatrix(upwms, 'P', lambda elements: elements.std())
stddev_pbefore = transformMatrix(upwms, 'Pbefore [mbar]', lambda elements: elements.std())
maxes_realp = transformMatrix(upwms, 'P', lambda elements: elements.max())
mins_realp = transformMatrix(upwms, 'P', lambda elements: elements.min())
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.