我有一个以下格式的 NumPy float 组:
[sizeA,headerA,sizeA items,sizeB,headerB,sizeB items...sizeN,headerN,sizeN items]
由于我事先不知道每个 block 有多少个项目,因此我目前手动执行跳转(迭代数组,检查 num 值并相应地跳到下一个 block )并填充数据带有数据的 block 。 我确信 python 有更复杂的方法来处理它,而无需迭代每个项目......
例如,3 个数据 block - 第一个有两个值,第二个有 3 个值,最后一个有单个值(为了清楚起见,请删除 header 部分)
示例输入:
[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]}
关于python - 将 NumPy float 组解码为不同长度的数据 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35125688/