通过根据Python中另一个列表中的值拆分数组来创建单独的数组

时间:2017-06-16 07:44:10

标签: python list numpy

我有一个如下矩阵:

a1 = [[ '05dcc1a8cd49fbe2e7d7fb105d697e96','122624838'],      
       ['5d9573196098ce0bb80b4657e43f2d3b','122624838'],  
       ['df29c5dafbfe8c0dcb5c92a2225c8899','3388999'],  
       ['33f95122281f76e7134f9cbea3be980f','3388999'],  
       ['b013295b38799b8c537c850ff891170e','3388999'],  
       ['b8dc623f5b936f9959e648323f061b3a','3388999']]

我有另一个列表,我想根据矩阵的第二列拆分。清单如下:

pred = [1,1,1,1,0,0,1..]    

我想根据a1中不同的第二列值获取包含列表pred的值的单独列表。 a1和pred的长度是相同的。这样做的最佳方式是什么?

(例如result1 = [1,1],因为a1使第二列中的前两个值相同,result2 = [1,1,0,0],因为a1的第二列中的后四个值)

1 个答案:

答案 0 :(得分:0)

我已经考虑过您的问题,并尝试为此编写可能的解决方案。

#let consider you have the given values of 'a1' and 'pred'
a1 = [ '05dcc1a8cd49fbe2e7d7fb105d697e96','122624838',      
       '5d9573196098ce0bb80b4657e43f2d3b','122624838',  
       'df29c5dafbfe8c0dcb5c92a2225c8899','3388999',  
       '33f95122281f76e7134f9cbea3be980f','3388999',  
       'b013295b38799b8c537c850ff891170e','3388999',  
       'b8dc623f5b936f9959e648323f061b3a','338899'
       'bjdhjndehjkkh54jht3u5355j4jj3453','338899']
pred=[1,1,1,1,0,0,1]
count=[]
flag=1
for x in range(0,len(a1)-1):
    if x%2!=0:
        if a1[x]==a1[x+2]:
            flag=flag+1
        else:
            count.append(flag)
            flag=1
count.append(flag)
print(count)  # The length and no. of partitions

# Printing the required list of values from pred
i=0
l=0
for x in count:
    print(pred[i:l+x])
    i=l+x
    l=l+x+1

这适用于a1pred的任何值,只要您考虑根据{{中的连续相同值的数量来分割pred中的值1}} ,假设两个列表的长度相同。

希望这会有所帮助!!