[英]Nested list comprehension for numpy
我有一個似乎無法解決的問題。
我正在從文件的行(每100行包含30個值的行)中構建一個形狀為(100,30)的numpy數組,我需要將此數組轉換為形狀(100,),其中n為均值來自原始數組每一行的最后一個值。
我的目標是在同一行中完成此操作,因此我嘗試了嵌套列表推導,但是我覺得完全迷失了方向,我不確定自己在做什么。
這就是我到目前為止所得到的,這為我提供了一個正確的形狀數組,但具有(我相信)錯誤的值。
def perf_n_last(n):
a = np.array([np.mean([i for j in range(len(i)-1, len(i)-(n+1), -1)]) for i in np.loadtxt('myfile.txt')])
print(a.shape) #outputs (100, )
輸入和輸出應類似於:
input_f = [[1. 2. 3. 4. 5.]
[2. 3. 4. 5. 6.]
[3. 4. 5. 6. 7.]]
#We assume n = 2
output_f = [4.5 5.5 6.5]
我也樂於接受有關列表切片的建議。 感謝您的幫助!
如果我正確理解了您的問題,那么使用numpy可以非常快速地完成此操作,假設2d數組中的每一行的長度都相同:
def perf_n_last(n):
return np.loadtxt("myfile.txt")[:,-n:].mean(1)
加載文件,切片以包括所有行,但僅包括最后n
列,並取每個結果行的平均值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.