[英]Use list of lists to average rows in numpy array
我想使用(python)列表中的條目中的信息來平均numpy數組的行。 例如,考慮以下內容:
LoL = [[], [0, 1, 2, 4], [3, 5], [], [6]] #List of lists
arr = np.array([[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5], [6, 6, 6, 6]]) #Numpy array
print arr
[[0 0 0 0]
[1 1 1 1]
[2 2 2 2]
[3 3 3 3]
[4 4 4 4]
[5 5 5 5]
[6 6 6 6]]
對於列表(上述列表LoL
)和numpy的陣列( arr
),我想行[0, 1, 2, 4]
的arr
獲得平均,行[3, 5]
的arr
獲得自己和行之間的平均[6]
保持其原始形式。 轉換后的數組( arr_new
)應該如下所示:
arr_new = np.array([[1.75, 1.75, 1.75, 1.75], [4.0, 4.0, 4.0, 4.0] , [6.0, 6.0, 6.0, 6.0]])
print arr_new
[[1.75 1.75 1.75 1.75]
[4. 4. 4. 4. ]
[6. 6. 6. 6. ]]
最優雅的方法是什么?
由於您的形狀不一致list
的list
的,沒有執行一個操作一個優雅的方式,但循環是一個選項,應該仍然是有效的,因為它只用的尺寸按比例LoL
:
np.stack([np.mean(arr[el], 0) for el in LoL if el])
array([[1.75, 1.75, 1.75, 1.75],
[4. , 4. , 4. , 4. ],
[6. , 6. , 6. , 6. ]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.