【问题标题】:Creating separate arrays by splitting an array according to values in another list in Python通过根据 Python 中另一个列表中的值拆分数组来创建单独的数组
【发布时间】:2017-06-16 07:44:10
【问题描述】:

我有一个如下矩阵:

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

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

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

我想获得一个单独的列表,其中包含列表 pred 的值,根据 a1 中不同的第二列值。 a1 和 pred 的长度是一样的。最好的方法是什么?

(例如 result1 = [1,1] 因为 a1 在第二列中的前两个值相同,result2 = [1,1,0,0] 由于 a1 第二列中接下来的四个值)

【问题讨论】:

  • 请尝试给minimal reproducible example。清晰的输入、预期输出和当前代码(如果有)。
  • “第二个值”是什么意思——每个奇数条目?那么将值分类为result1result2 的标准是什么。此外,在您的示例中,您显示的是列表,而不是 numpy 数组。
  • 您的问题不清楚。 @asmita-poddar : 你的result1result2 和列表pred,输入列表a1 能不能把关系解释的更清楚。

标签: python list numpy


【解决方案1】:

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

#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 的任何值,只要您考虑根据a1 中连续相同值的数量来拆分pred 中的值,鉴于两个列表的长度相同。

希望这会有所帮助!

【讨论】:

  • 我很想知道我的答案中的问题,因为我是社区的新手,这将帮助我改进。让我知道拒绝投票的原因
猜你喜欢
  • 2017-09-17
  • 2018-01-22
  • 1970-01-01
  • 2022-01-26
  • 2017-09-12
  • 2019-08-16
  • 1970-01-01
  • 2019-02-27
  • 2017-02-13
相关资源
最近更新 更多