2017-06-05 28 views
0

列表np.split創建索引列表我有一個數字從已有的編號爲每個部分

list = [1,2,3,4,5,6,7,8,9] 
number = [3,2,1,3] 

我想從number

index = [3,5,6,9] 
創造np.split指數的兩個列表

np.split(list, index) 

預期結果

[[1,2,3],[4,5],[6],[7,8,9]] 

我想是這樣newlist = [x+number[0:index(x)] for x in list]但它仍然無法正常工作

回答

1

方法#1

如果我們要使用np.split導致陣列的列表,我們需要對這些使用np.cumsum索引給我們索引,我們需要分割輸入列表 -

np.split(list1, np.cumsum(number)[:-1]) 

S充足的運行 -

In [36]: list1 = [1,2,3,4,5,6,7,8,9] 
    ...: number = [3,2,1,3] 
    ...: 

In [37]: np.split(list1, np.cumsum(number)[:-1]) 
Out[37]: [array([1, 2, 3]), array([4, 5]), array([6]), array([7, 8, 9])] 

方法2

爲了有一個列表的列表,以循環的理解再次使用cumsum另一種方法 -

idx = np.r_[0,np.cumsum(number)] 
out = [list1[idx[i]:idx[i+1]] for i in range(len(idx)-1)] 

採樣運行 -

In [45]: idx = np.r_[0,np.cumsum(number)] 

In [46]: [list1[idx[i]:idx[i+1]] for i in range(len(idx)-1)] 
Out[46]: [[1, 2, 3], [4, 5], [6], [7, 8, 9]] 
相關問題