将 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]}

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

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.9967], 'b': [5.2345,

0.345, 0.023], 'c': [4.2345]}

最新更新