Python 使用列表列表平均numpy数组中的行

Python 使用列表列表平均numpy数组中的行,python,arrays,numpy,Python,Arrays,Numpy,我想使用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

我想使用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]]
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.  ]]
对于上面的列表LoL和numpy array arr,我希望arr的行[0,1,2,4]得到平均值,arr的行[3,5]在它们之间得到平均值,行[6]保持其原始形式。转换后的数组arr_new应如下所示:

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

最优雅的方法是什么?

由于列表中的形状不一致,没有一种优雅的方法来执行单个操作,但是循环是一种选择,应该仍然是有效的,因为它只随LoL的大小进行缩放: