簡體   English   中英

有沒有一種方法可以簡化多個列表的理解?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM