解码NumPy会将数组浮动到不同长度的数据块中吗?

时间:2016-02-01 08:11:08

标签: python numpy

我有一个NumPy浮点数数组,格式如下:

[sizeA,headerA,sizeA items,sizeB,headerB,sizeB items...sizeN,headerN,sizeN items]

由于我事先并不知道每个块有多少项,我现在手动进行跳转(遍历数组,检查num值并相应地跳到下一个块)并填充数据数据块。 我确信python有更复杂的方法来处理它而不需要迭代每个项目......

例如,3个数据块 - 一个具有两个值,第二个具有3个值,最后一个具有单个值(为清晰起见,删除标题部分)

示例输入:

[2.0,3.12345,0.9967,3.0,5.2345,0.345,0.023,1.0,4.2345]

我希望输出字典看起来像:

{'A':[3.12345,0.9967], 'B':[5.2345,0.345,0.023], 'C':[4.2345]}

1 个答案:

答案 0 :(得分:1)

这可行,但可能不是最简单的解决方案:

a=[2.0,3.12345,0.9967,3.0,5.2345,0.345,0.023,1.0,4.2345]

keys=[a[0]] # list of the sizes
values=[]
i=[0]
while True:
    i.append(int(sum(keys))+len(keys))
    if i[-1]<len(a):
        keys.append(a[i[-1]])
    else:
        break

values=[a[i[j]+1:i[j+1]] for j in range(len(i)-1)] #list of values

result =dict(zip(['a','b','c'],values))

输出:

  

{'a':[3.12345,0.997],'b':[5.2345,0.345,0.023],'c':[4.2345]}