python - 将 NumPy float 组解码为不同长度的数据 block ?

标签 python numpy

我有一个以下格式的 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/

相关文章:

python - 在 OpenCV python 中将白色像素转换为黑色

python - 正则表达式中字符周围不需要的空格

python - Lorentzian scipy.optimize.leastsq 适合数据失败

python - "too many resources for launch"的解释

python - 创建具有相同自相关的排列

python - 高效计算每个非零元素为 1 的稀疏数组的列总和

python - 使用配置文件控制树莓派 gpio

python - 在 DataFrame 中使用正则表达式 - 最后 5 个字符

python - 如何在 Python 中使用 .split 将未知数量的数字输入分配给变量?

python - 从 Pandas 数据框中获取 N 个最小距离对